1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-12 09:18:10 +03:00
Commit Graph

67 Commits

Author SHA1 Message Date
Stefan Metzmacher
de553b52f2 s4:gensec/spnego: only try the mechs that match the client given ones
Windows-Members of NT4/Samba3 domains, send

MechTypes:
1.3.6.1.4.1.311.2.2.10 [NTLMSSP]
1.2.840.48018.1.2.2    [krb5 broken]
1.2.840.113554.1.2.2   [krb5]

MechToken for NTLMSSP.

This patch makes sure we start NTLMSSP with the given MechToken,
instead of trying to pass the NTLMSSP MechToken to the krb5 backend
first. As that would fail the authentication with an error
instead of trying fallbacks.

metze

Autobuild-User: Stefan Metzmacher <metze@samba.org>
Autobuild-Date: Wed Nov 30 17:03:29 CET 2011 on sn-devel-104
2011-11-30 17:03:29 +01:00
Andrew Bartlett
e7d5f0a357 gensec: move event context from gensec_*_init() to gensec_update()
This avoids keeping the event context around on a the gensec_security
context structure long term.

In the Samba3 server, the event context we either supply is a NULL
pointer as no server-side modules currently use the event context.

Andrew Bartlett

Signed-off-by: Stefan Metzmacher <metze@samba.org>
2011-10-18 13:13:33 +11:00
Andrew Bartlett
f88b686167 gensec: move event-using code to gensec_update() hooks out of gensec_start*()
This ensures that only gensec_update() will require an event context argument
when the API is refactored.

Andrew Bartlett
2011-10-18 13:13:33 +11:00
Andrew Bartlett
35b309fa0c gensec: clarify memory ownership for gensec_session_info() and gensec_session_key()
This is slightly less efficient, because we no longer keep a cache on
the gensec structures, but much clearer in terms of memory ownership.
Both gensec_session_info() and gensec_session_key() now take a mem_ctx
and put the result only on that context.

Some duplication of memory in the callers (who were rightly uncertain
about who was the rightful owner of the returned memory) has been
removed to compensate for the internal copy.

Andrew Bartlett
2011-08-03 18:48:02 +10:00
Andrew Bartlett
d3fe48ba48 gensec: Remove mem_ctx from calls that do not return memory
Signed-off-by: Andrew Tridgell <tridge@samba.org>
2011-08-03 18:48:01 +10:00
Andrew Bartlett
16b2118b43 gensec: split GENSEC into mechanism-dependent and runtime functions
The startup and runtime functions that have no dependencies are moved
into the top level.

Andrew Bartlett

Signed-off-by: Andrew Tridgell <tridge@samba.org>
2011-08-03 18:48:01 +10:00
Jelmer Vernooij
8823aeaf24 source4/auth/gensec: Fix prototypes for all functions. 2011-03-19 03:20:05 +01:00
Matthias Dieter Wallnöfer
89522ea5b1 s4:auth/gensec/spnego.c - remove unused variable "principal" 2010-12-21 15:10:37 +11:00
Stefan Metzmacher
f126cb9eea s4:gensec/spnego: only look at the optimistic token if we support the first mech
As a server only try the mechs the client proposed
and only call gensec_update() with the optimistic token
for the first mech in the list.

If the server doesn't support the first mech we pick the
first one in the clients list we also support.
That's how w2k8r2 works.

metze

Autobuild-User: Stefan Metzmacher <metze@samba.org>
Autobuild-Date: Tue Dec 14 16:50:50 CET 2010 on sn-devel-104
2010-12-14 16:50:49 +01:00
Andrew Bartlett
154b431093 s4-spnego Match Windows 2008, and no longer supply a name in the CIFS Negprot
Andrew Bartlett

Autobuild-User: Andrew Bartlett <abartlet@samba.org>
Autobuild-Date: Thu Dec  9 08:50:28 CET 2010 on sn-devel-104
2010-12-09 08:50:27 +01:00
Andrew Bartlett
94f4929e04 s4-spnego use "not_defined_in_RFC4178@please_ignore" if no principal specified
We need to make this the default, but for now just send it if we have
not been given a target principal.

Andrew Bartlett
2010-12-08 08:55:04 +01:00
Andrew Bartlett
a21cb5a0a1 libcli/auth bring ADS_IGNORE_PRINCIPAL in common 2010-12-08 08:55:04 +01:00
Andrew Bartlett
10c82d0619 s4-auth Supply more useful error messages on Kerberos failure
The practice of returning only NT_STATUS_INVALID_PARAMETER hasn't
helped our users to debug problems effectivly, and so we now return
more errors and try and give a more useful debug message when then
happen.

Andrew Bartlett
2010-11-08 18:15:23 +11:00
Volker Lendecke
ba726b5580 s4: Fix two typos 2010-09-14 22:26:17 -07:00
Andrew Tridgell
6b266b85cf s4-loadparm: 2nd half of lp_ to lpcfg_ conversion
this converts all callers that use the Samba4 loadparm lp_ calling
convention to use the lpcfg_ prefix.

Signed-off-by: Andrew Bartlett <abartlet@samba.org>
2010-07-16 18:24:27 +10:00
Andrew Bartlett
b5dc394962 s4:gensec expose gensec_set_target_principal for use outside GENSEC
This allows for the rare case where the caller knows the target
principal.  The check for lp_client_use_spnego_principal() is moved to
the spengo code to make this work.

Andrew Bartlett
2010-05-14 23:25:45 +10:00
Jelmer Vernooij
6a79ad7664 gensec: Avoid exposing lp_ctx on the API level. 2009-09-26 20:55:18 +02:00
Kouhei Sutou
f8dae40fc8 spnego: Support ASN.1 BIT STRING and use it in SPNEGO.
Signed-off-by: Günther Deschner <gd@samba.org>
2009-09-17 20:10:54 +02:00
Günther Deschner
503d035814 spnego: share spnego_parse.
Guenther
2009-09-17 01:12:20 +02:00
Stefan Metzmacher
7204ea422b s4:gensec/spnego: only generate the mechListMic when the server expects it
This fixes the ntvfs.cifs tests.

metze
2009-07-28 12:16:13 +02:00
Stefan Metzmacher
c00e4040bc s4:gensec/spengo: make sure we send the blob with the micListMech signature to the peer
We should even do this if the submech has no more data to send.

metze
2009-07-24 09:38:30 +02:00
Jelmer Vernooij
b45caa44e1 Fix the build. 2008-11-02 23:58:49 +01:00
Jelmer Vernooij
1e053df95c Remove use of global_loadparm for disabled gensec backends. 2008-11-02 19:28:17 +01:00
Stefan Metzmacher
999b69d176 s4:gensec: pass down want_features to the spnego backend mech
metze
2008-10-06 19:21:44 +02:00
Stefan Metzmacher
8ba2041bf3 gensec: add support for new style spnego and correctly handle mechListMIC
metze
(This used to be commit 05a3403967)
2008-08-12 16:21:39 +02:00
Jelmer Vernooij
afe3e8172d Install public header files again and include required prototypes.
(This used to be commit 47ffbbf674)
2008-04-02 04:53:27 +02:00
Jelmer Vernooij
39a6495c86 Make more module init functions public, since they are compiled with -fvisibility=hidden. Not doing this causes failures on Mac OS X.
(This used to be commit da1a9438bd)
2008-02-20 19:40:20 +01:00
Jelmer Vernooij
3da665e9ac r26385: Integrate gensec-socket into gensec.
(This used to be commit 78bb444b4b)
2007-12-21 05:49:19 +01:00
Jelmer Vernooij
ecea5ce245 r26260: Store loadparm context in gensec context.
(This used to be commit b9e3a4862e)
2007-12-21 05:47:34 +01:00
Jelmer Vernooij
78416aff6c r26258: Use loadparm context in client_start function of gensec.
(This used to be commit bad1891cae)
2007-12-21 05:47:32 +01:00
Jelmer Vernooij
fface33dd7 r26231: Spell check: credentails -> credentials.
(This used to be commit 4b46888bd0)
2007-12-21 05:47:09 +01:00
Jelmer Vernooij
3642f3b40d r25552: Convert to standard bool type.
(This used to be commit b8d6b82f12)
2007-10-10 15:07:54 -05:00
Jelmer Vernooij
cd962355ab r25000: Fix some more C++ compatibility warnings.
(This used to be commit 08bb1ef643)
2007-10-10 15:05:27 -05:00
Andrew Tridgell
0479a2f1cb r23792: convert Samba4 to GPLv3
There are still a few tidyups of old FSF addresses to come (in both s3
and s4). More commits soon.
(This used to be commit fcf38a38ac)
2007-10-10 14:59:12 -05:00
Andrew Tridgell
7bb939b1cb r23030: finally fixed up our asn1 code to use better memory allocation. This
should allow us to fix some long standing memory leaks.
(This used to be commit 3db49c2ec9)
2007-10-10 14:52:42 -05:00
Andrew Bartlett
1a7b251319 r22966: Make sure to return LOGON_FAILURE if the user's kerberos password is
incorrect.

Andrew Bartlett
(This used to be commit 9dc6f36e43)
2007-10-10 14:52:33 -05:00
Andrew Bartlett
c2688ec228 r22293: Try to make it more clear what failed to parse.
Andrew Bartlett
(This used to be commit 144ab7294d)
2007-10-10 14:50:57 -05:00
Stefan Metzmacher
ae9f7857d5 r20107: don't segfault when the server didn't send a supportedMech in a negTokenTarg
this happens because we send 1.2.840.113554.1.2.2 before 1.2.840.48018.1.2.2
in the negTokenInit. And w2k's spnego code redirects us to use 1.2.840.48018.1.2.2
and then we start the our spnego engine with 1.2.840.48018.1.2.2 and in the then following
negTokenTarg w2k don't send the supportedMech (which means it aggrees in what we've choosen)

metze
(This used to be commit 5af5488593)
2007-10-10 14:29:07 -05:00
Andrew Bartlett
13dbee3ffe r19598: Ahead of a merge to current lorikeet-heimdal:
Break up auth/auth.h not to include the world.

Add credentials_krb5.h with the kerberos dependent prototypes.

Andrew Bartlett
(This used to be commit 2b569c42e0)
2007-10-10 14:25:00 -05:00
Andrew Bartlett
c1ec0da99c r18257: Order the GENSEC modules, with unknown modules last.
Andrew Bartlett
(This used to be commit 8ae880b501)
2007-10-10 14:17:57 -05:00
Andrew Bartlett
c062b12fba r18250: Add an ordering of GENSEC modules, so we do preferred modules first.
Andrew Bartlett
(This used to be commit 0afb4d1992)
2007-10-10 14:17:55 -05:00
Andrew Bartlett
c3b54cf75b r18068: This splits the handling of multiple SASL packets between the GENSEC
backend (if it chooses to implement it), or the GENSEC socket code.

This is to allow us to handle DIGEST-MD5 across to cyrus-sasl.

Andrew Bartlett
(This used to be commit 0a098006b4)
2007-10-10 14:17:11 -05:00
Andrew Bartlett
ba07fa43d0 r17197: This patch moves the encryption of bulk data on SASL negotiated security
contexts from the application layer into the socket layer.

This improves a number of correctness aspects, as we now allow LDAP
packets to cross multiple SASL packets.  It should also make it much
easier to write async LDAP tests from windows clients, as they use SASL
by default.  It is also vital to allowing OpenLDAP clients to use GSSAPI
against Samba4, as it negotiates a rather small SASL buffer size.

This patch mirrors the earlier work done to move TLS into the socket
layer.

Unusual in this pstch is the extra read callback argument I take.  As
SASL is a layer on top of a socket, it is entirely possible for the
SASL layer to drain a socket dry, but for the caller not to have read
all the decrypted data.  This would leave the system without an event
to restart the read (as the socket is dry).

As such, I re-invoke the read handler from a timed callback, which
should trigger on the next running of the event loop.  I believe that
the TLS code does require a similar callback.

In trying to understand why this is required, imagine a SASL-encrypted
LDAP packet in the following formation:

+-----------------+---------------------+
| SASL  Packet #1 | SASL Packet #2      |
----------------------------------------+
| LDAP Packet #1       | LDAP Packet #2 |
----------------------------------------+

In the old code, this was illegal, but it is perfectly standard
SASL-encrypted LDAP.  Without the callback, we would read and process
the first LDAP packet, and the SASL code would have read the second SASL
packet (to decrypt enough data for the LDAP packet), and no data would
remain on the socket.

Without data on the socket, read events stop.  That is why I add timed
events, until the SASL buffer is drained.

Another approach would be to add a hack to the event system, to have it
pretend there remained data to read off the network (but that is ugly).

In improving the code, to handle more real-world cases, I've been able
to remove almost all the special-cases in the testnonblock code.  The
only special case is that we must use a deterministic partial packet
when calling send, rather than a random length.  (1 + n/2).  This is
needed because of the way the SASL and TLS code works, and the 'resend
on failure' requirements.

Andrew Bartlett
(This used to be commit 5d7c9c12cb)
2007-10-10 14:10:18 -05:00
Jelmer Vernooij
35349a58df r14542: Remove librpc, libndr and libnbt from includes.h
(This used to be commit 51b4270513)
2007-10-10 13:58:42 -05:00
Jelmer Vernooij
ba564a901e r13903: Don't generate prototypes for modules and binaries in include/proto.h by
default.
(This used to be commit c80a8f1102)
2007-10-10 13:52:21 -05:00
Andrew Bartlett
08195b0ed5 r13584: Another try at SPNEGO stuff. I need to write a better testsuite for this.
This tries to ensure that when we are a client, we cope with mechs
(like GSSAPI) that only abort (unknown server) at first runtime.

Andrew Bartlett
(This used to be commit cb5d18c619)
2007-10-10 13:51:58 -05:00
Andrew Bartlett
44e601b5ad r13206: This patch finally re-adds a -k option that works reasonably.
From here we can add tests to Samba for kerberos, forcing it on and
off.  In the process, I also remove the dependency of credentials on
GENSEC.

This also picks up on the idea of bringing 'set_boolean' into general
code from jpeach's cifsdd patch.

Andrew Bartlett
(This used to be commit 1ac7976ea6)
2007-10-10 13:51:33 -05:00
Andrew Bartlett
97113d0508 r12439: No need to keep walking this list if we find the match.
Andrew Bartlett
(This used to be commit cf1883c3cc)
2007-10-10 13:47:39 -05:00
Andrew Bartlett
36d7778784 r12436: Fix Samba4 as a server to Win2000 for the domain join.
We still have Win2000 issues, but now we correctly handle the case
where NTLMSSP is chosen as an authentication mech, but the OID list
still contains Kerberos as a later option.

Andrew Bartlett
(This used to be commit dc2b2c33f8)
2007-10-10 13:47:39 -05:00
Andrew Bartlett
61bd609574 r12060: Work towards allowing the credentials system to allow/deny certain
GENSEC mechansims.  This will allow a machine join to an NT4 domain to
avoid even trying kerberos, or a sensitive operation to require it.

Andrew Bartlett
(This used to be commit 11c7a89e52)
2007-10-10 13:47:02 -05:00