@@ -32,6 +32,26 @@ the 401 response.
32
32
Mutual Authentication
33
33
---------------------
34
34
35
+ Mutual authentication is a poorly-named feature of the GSSAPI which doesn't
36
+ provide any additional security benefit to most possible uses of
37
+ requests_gssapi. Practically speaking, in most mechanism implementations
38
+ (including krb5), it requires another round-trip between the client and server
39
+ during the authentication handshake. Many clients and servers do not properly
40
+ handle the authentication handshake taking more than one round-trip. If you
41
+ encounter a MutualAuthenticationError, this is probably why.
42
+
43
+ So long as you're running over a TLS link whose security guarantees you trust,
44
+ there's no benefit to mutual authentication. If you don't trust the link at
45
+ all, mutual authentication won't help (since it's not tamper-proof, and GSSAPI
46
+ isn't being used post-authentication. There's some middle ground between the
47
+ two where it helps a small amount (e.g., passive adversary over
48
+ encrypted-but-unverified channel), but for Negotiate (what we're doing here),
49
+ it's not generally helpful.
50
+
51
+ For a more technical explanation of what mutual authentication actually
52
+ guarantees, I refer you to rfc2743 (GSSAPIv2), rfc4120 (krb5 in GSSAPI),
53
+ rfc4178 (SPNEGO), and rfc4559 (HTTP Negotiate).
54
+
35
55
REQUIRED
36
56
^^^^^^^^
37
57
0 commit comments