archive-org.com » ORG » J » JOSEFSSON.ORG

Total: 236

Choose link from "Titles, links and description words view":

Or switch to "Titles and links view".
  • Diff: draft-ietf-sasl-gs2.txt - rfc5801.txt
    Bindings 10 5 1 Content of GSS CHANNEL BINDINGS Structure 11 5 1 Content of GSS CHANNEL BINDINGS Structure 11 5 2 Default Channel Binding 11 5 2 Default Channel Binding 12 6 Examples 12 6 Examples 12 7 Authentication Conditions 14 7 Authentication Conditions 14 8 GSS API Parameters 14 8 GSS API Parameters 15 9 Naming 15 9 Naming 15 10 GSS Inquire SASLname for mech Call 15 10 GSS Inquire SASLname for mech Call 15 10 1 gss inquire saslname for mech 17 10 1 gss inquire saslname for mech 16 11 GSS Inquire mech for SASLname Call 19 11 GSS Inquire mech for SASLname Call 18 11 1 gss inquire mech for saslname 20 11 1 gss inquire mech for saslname 19 12 Security Layers 20 12 Security Layers 20 13 Interoperability with the SASL GSSAPI Mechanism 21 13 Interoperability with the SASL GSSAPI Mechanism 20 13 1 The Interoperability Problem 21 13 1 The Interoperability Problem 20 13 2 Resolving the Problem 21 13 2 Resolving the Problem 20 13 3 Additional Recommendations 21 13 3 Additional Recommendations 20 14 GSS API Mechanisms That Negotiate Other Mechanisms 21 14 GSS API Mechanisms That Negotiate Other Mechanisms 21 14 1 The Interoperability Problem 22 14 1 The Interoperability Problem 21 14 2 Security Problem 22 14 2 Security Problem 21 14 3 Resolving the Problems 22 14 3 Resolving the Problems 21 15 IANA Considerations 22 15 IANA Considerations 22 16 Security Considerations 23 16 Security Considerations 22 17 Acknowledgements 24 17 Acknowledgements 24 18 References 25 18 References 24 18 1 Normative References 25 18 1 Normative References 24 18 2 Informative References 25 18 2 Informative References 25 Authors Addresses 26 1 Introduction 1 Introduction Generic Security Service Application Program Interface GSS API Generic Security Service Application Program Interface GSS API RFC2743 is a framework that provides security services to RFC2743 is a framework that provides security services to applications using a variety of authentication mechanisms Simple applications using a variety of authentication mechanisms Simple Authentication and Security Layer SASL RFC4422 is a framework to Authentication and Security Layer SASL RFC4422 is a framework to provide authentication and security layers for connection based provide authentication and security layers for connection based protocols also using a variety of mechanisms This document protocols also using a variety of mechanisms This document describes how to use a GSS API mechanism as though it were a SASL describes how to use a GSS API mechanism as though it were a SASL skipping to change at page 24 line 35 skipping to change at page 24 line 8 The security considerations of SASL RFC4422 the GSS API RFC2743 The security considerations of SASL RFC4422 the GSS API RFC2743 channel binding RFC5056 any external channels such as TLS channel binding RFC5056 any external channels such as TLS RFC5246 channel binding types see the IANA channel binding type RFC5246 channel binding types see the IANA channel binding type registry and GSS

    Original URL path: http://www.josefsson.org/sasl-gs2/rfc5801-from-draft-ietf-sasl-gs2.diff.html (2016-04-30)
    Open archived version from archive


  • Diff: draft-ietf-sasl-gs2-20.txt - rfc5801.txt
    last bit and re group them in groups of decimal which results in these computations 5 and convert them back to decimal which results in these computations hex hex 1c f8 f4 2b 5a 9f 80 1c f8 f4 2b 5a 9f 80 binary binary 00011100 11111000 11110100 00101011 01011010 00011100 11111000 11110100 00101011 01011010 10011111 1000000 10011111 1000000 binary in groups of 5 binary in groups of 5 00011 10011 11100 01111 01000 01010 11010 11010 00011 10011 11100 01111 01000 01010 11010 11010 skipping to change at page 6 line 43 skipping to change at page 7 line 4 binary binary 00011100 11111000 11110100 00101011 01011010 00011100 11111000 11110100 00101011 01011010 10011111 1000000 10011111 1000000 binary in groups of 5 binary in groups of 5 00011 10011 11100 01111 01000 01010 11010 11010 00011 10011 11100 01111 01000 01010 11010 11010 10011 11110 00000 10011 11110 00000 decimal of each group decimal of each group 3 19 28 15 8 10 26 26 19 30 0 3 19 28 15 8 10 26 26 19 30 0 base32 encoding base32 encoding D T 4 P I K 2 2 T 6 A D T 4 P I K 2 2 T 6 A The last step translates each decimal value using table 3 in Base32 The last step translates each decimal value using table 3 in Base32 RFC4648 Thus the SASL mechanism name for the SPKM 1 GSSAPI RFC4648 Thus the SASL mechanism name for the SPKM 1 GSSAPI mechanism is GS2 DT4PIK22T6A mechanism is GS2 DT4PIK22T6A The OID for the Kerberos V5 GSS API mechanism RFC1964 is The OID for the Kerberos V5 GSS API mechanism RFC1964 is 1 2 840 113554 1 2 2 and its DER encoding is in hex 06 09 2A 86 48 1 2 840 113554 1 2 2 and its DER encoding is in hex 06 09 2A 86 48 86 F7 12 01 02 02 The SHA 1 hash is 82 d2 73 25 76 6b d6 c8 45 aa 86 F7 12 01 02 02 The SHA 1 hash is 82 d2 73 25 76 6b d6 c8 45 aa 93 25 51 6a fc ff 04 b0 43 60 Convert the 7 octets to binary drop 93 25 51 6a fc ff 04 b0 43 60 Convert the 7 octets to binary drop the last bit and re group them in groups of 5 and convert them back the last bit and re group them in groups of 5 and convert them back to decimal which results in these computations to decimal which results in these computations hex hex skipping to change at page 7 line 28 skipping to change at page 7 line 36 10000 01011 01001 00111 00110 01001 01011 10110 10000 01011 01001 00111 00110 01001 01011 10110 01101 01111 01011 01101 01111 01011 decimal of each group decimal of each group 16 11 9 7 6 9 11 22 13 15 11 16 11 9 7 6 9 11 22 13 15 11 base32 encoding base32 encoding Q L J H G J L W N P L Q L J H G J L W N P L The last step translates each decimal value using table 3 in Base32 The last step translates each decimal value using table 3 in Base32 RFC4648 Thus the SASL mechanism name for the Kerberos V5 GSS API RFC4648 Thus the SASL mechanism name for the Kerberos V5 GSS API mechanism would be GS2 QLJHGJLWNPL and because this mechanism mechanism would be GS2 QLJHGJLWNPL and because this mechanism supports channel binding GS2 QLJHGJLWNPL PLUS Instead the next supports channel binding GS2 QLJHGJLWNPL PLUS Instead the next section assigns the Kerberos V5 mechanism a non hash derived section assigns the Kerberos V5 mechanism a non hash derived mechanism name mechanism name 3 4 Grandfathered mechanism n ames 3 4 Grandfathered Mechanism N ames Some older GSS API mechanisms were not specified with a SASL GS2 Some older GSS API mechanisms were not specified with a SASL GS2 mechanism name Using a shorter name can be useful nonetheless We mechanism name Using a shorter name can be useful nonetheless We specify the names GS2 KRB5 and GS2 KRB5 PLUS for the Kerberos V5 specify the names GS2 KRB5 and GS2 KRB5 PLUS for the Kerberos V5 mechanism to be used as if the original specification documented it mechanism to be used as if the original specification documented it See Section 15 see Section 15 4 SASL Authentication Exchange Message Format 4 SASL Authentication Exchange Message Format During the SASL authentication exchange for GS2 a number of messages During the SASL authentication exchange for GS2 a number of messages following the following format is sent between the client and server following the following format are sent between the client and On success this number is the same as the number of context tokens server On success this number is the same as the number of context that the GSS API mechanism would normally require in order to tokens that the GSS API mechanism would normally require in order to establish a security context On failures the exchange can be establish a security context On failures the exchange can be terminated early by any party terminated early by any party When using a GS2 mechanism the SASL client is always a GSS API When using a GS2 mechanism the SASL client is always a GSS API initiator and the SASL server is always a GSS API acceptor The initiator and the SASL server is always a GSS API acceptor The client calls GSS Init sec context and the server calls client calls GSS Init sec context and the server calls GSS Accept sec context GSS Accept sec context All the SASL authentication messages exchanged are exactly the same All the SASL authentication messages exchanged are exactly the same as the security context tokens of the GSS API mechanism except for as the security context tokens of the GSS API mechanism except for the initial security context token the initial security context token The client and server MAY send GSS API error tokens tokens output by The client and server MAY send GSS API error tokens tokens output by GSS Init sec context or GSS Accept sec context when the major GSS Init sec context or GSS Accept sec context when the major status code is other than GSS S COMPLETE or GSS S CONTINUE NEEDED status code is other than GSS S COMPLETE or GSS S CONTINUE NEEDED As this indicates an error condition after sending the token the As this indicates an error condition after sending the token the sending side should fail the authentication sending side should fail the authentication The initial security context token is modified as follows The initial security context token is modified as follows o The initial context token header see section 3 1 of RFC2743 o The initial context token header see Section 3 1 of RFC2743 MUST be removed if present If the header is not present the MUST be removed if present If the header is not present the client MUST send a gs2 nonstd flag flag see below On the client MUST send a gs2 nonstd flag flag see below On the server side this header MUST be recomputed and restored prior to server side this header MUST be recomputed and restored prior to passing the token to GSS Accept sec context except when the gs2 passing the token to GSS Accept sec context except when the gs2 nonstd flag is sent nonstd flag is sent o A GS2 header MUST be prefixed to the resulting initial context o A GS2 header MUST be prefixed to the resulting initial context token This header has the form gs2 header given below in ABNF token This header has the form gs2 header given below in ABNF RFC5234 RFC5234 The figure below describes the permissible attributes their use and The figure below describes the permissible attributes their use and the format of their values All attribute names are single US ASCII the format of their values All attribute names are single US ASCII letters and are case sensitive letters and are case sensitive UTF8 1 safe x01 2B x2D 3C x3E 7F UTF8 1 safe x01 2B x2D 3C x3E 7F As UTF8 1 in RFC 3629 except As UTF8 1 in RFC 3629 except NUL and NUL and UTF8 2 as defined in RFC 3629 STD 63 UTF8 2 as defined in RFC 3629 STD 63 UTF8 3 as defined in RFC 3629 STD 63 UTF8 3 as defined in RFC 3629 STD 63 UTF8 4 as defined in RFC 3629 STD 63 UTF8 4 as defined in RFC 3629 STD 63 UTF8 char safe UTF8 1 safe UTF8 2 UTF8 3 UTF8 4 UTF8 char safe UTF8 1 safe UTF8 2 UTF8 3 UTF8 4 saslname 1 UTF8 char safe 2C 3D saslname 1 UTF8 char safe 2C 3D gs2 authzid a saslname gs2 authzid a saslname GS2 has to transport an authzid since GS2 has to transport an authzid since the GSS API has no equivalent the GSS API has no equivalent gs2 nonstd flag F gs2 nonstd flag F F means the mechanism is not a F means the mechanism is not a standard GSS API mechanism in that the standard GSS API mechanism in that the RFC 2743 s ection 3 1 header was missing RFC 2743 S ection 3 1 header was missing cb name 1 ALPHA DIGIT cb name 1 ALPHA DIGIT See RFC 5056 section 7 See RFC 5056 Section 7 gs2 cb flag p cb name n y gs2 cb flag p cb name n y GS2 channel binding CB flag GS2 channel binding CB flag p client supports and used CB p client supports and used CB n client does not support CB n client does not support CB y client supports CB thinks the server y client supports CB thinks the server does not does not gs2 header gs2 nonstd flag gs2 cb flag gs2 authzid gs2 header gs2 nonstd flag gs2 cb flag gs2 authzid The GS2 header is gs2 header The GS2 header is gs2 header When the gs2 nonstd flag flag is present the client did not find When the gs2 nonstd flag flag is present the client did not find remove a token header RFC2743 s ection 3 1 from the initial token remove a token header RFC2743 S ection 3 1 from the initial token returned by GSS Init sec context This signals to the server that it returned by GSS Init sec context This signals to the server that it MUST NOT re add the data that is normally removed by the client MUST NOT re add the data that is normally removed by the client The gs2 cb flag signals the channel binding mode One of p n The gs2 cb flag signals the channel binding mode One of p n or y is used A p means the client supports and used a channel or y is used A p means the client supports and used a channel binding and the name of the channel binding type is indicated A binding and the name of the channel binding type is indicated A n n means that the client does not support channel binding A y n means that the client does not support channel binding A y means the client supports channel binding but believes the server means the client supports channel binding but believes the server does not support it so it did not use a channel binding See the does not support it so it did not use a channel binding See the next section for more details next section for more details The gs2 authzid holds the SASL authorization identity It is The gs2 authzid holds the SASL authorization identity It is encoded using UTF 8 RFC3629 with three exceptions encoded using UTF 8 RFC3629 with three exceptions o The NUL character is forbidden as required by section 3 4 1 of o The NUL character is forbidden as required by section 3 4 1 of RFC4422 RFC4422 o The server MUST replace any comma in the string with 2C o The server MUST replace any comma in the string with 2C o The server MUST replace any equals in the string with 3D o The server MUST replace any equals in the string with 3D Upon receipt of this value the server verifies its correctness Upon receipt of this value the server verifies its correctness according to the used SASL protocol profile Failed verification according to the used SASL protocol profile Failed verification results in a failed authentication exchange results in a failed authentication exchange 5 Channel Bindings 5 Channel Bindings GS2 supports channel binding to external secure channels such as GS2 supports channel binding to external secure channels such as TLS Clients and servers may or may not support channel binding TLS Clients and servers may or may not support channel binding therefore the use of channel binding is negotiable GS2 does not therefore the use of channel binding is negotiable However GS2 provide security layers however therefore it is imperative that GS2 does not provide security layers therefore it is imperative that provide integrity protection for the negotiation of channel binding GS2 provide integrity protection for the negotiation of channel binding Use of channel binding is negotiated as follows Use of channel binding is negotiated as follows o Servers SHOULD advertise both non PLUS and the PLUS variant of each GS2 mechanism name If the server cannot support channel o Servers that support the use of channel binding SHOULD advertise binding it MAY advertise only the non PLUS variant If the both the non PLUS and PLUS variant of each GS2 mechanism name If server would never succeed authentication of the non PLUS variant the server cannot support channel binding it SHOULD advertise due to policy reasons it MAY advertise only the PLUS variant only the non PLUS variant If the server would never succeed in o If the client negotiates mechanisms then clients MUST select the the authentication of the non PLUS variant due to policy reasons PLUS variant if offered by the server Otherwise the client does it MUST advertise only the PLUS variant not negotiate mechanisms if the client has no prior knowledge about mechanisms supported by the server and wasn t explicitly configured to use a particular variant of the GS2 mechanism then it MUST select only non PLUS version of the GS2 mechanism o If the client does not support channel binding then it MUST use a n gs2 cb flag o If the client supports channel binding and the server does not o If the client supports channel binding and the server does not appear to i e the client did not see the PLUS name then the appear to i e the client did not see the PLUS name advertised client MUST either fail authentication or it MUST chose the non by the server then the client MUST NOT use an n gs2 cb flag PLUS mechanism name and use a y gs2 cb flag o If the client supports channel binding and the server appears to o Clients that support mechanism negotiation and channel binding support it i e the client see the PLUS name or if the client MUST use a p gs2 cb flag when the server offers the PLUS variant wishes to use channel binding but the client does not negotiate of the desired GS2 mechanism mechanisms then the client MUST use a p gs2 cb flag to indicate the channel binding type it is using o If the client does not support channel binding then it MUST use o The client generate the chan bindings input parameter for an n gs2 cb flag Conversely if the client requires the use of channel binding then it MUST use a p gs2 cb flag Clients that do not support mechanism negotiation never use a y gs2 cb flag they use either p or n according to whether they require and support the use of channel binding or whether they do not respectively o The client generates the chan bindings input parameter for GSS Init sec context as described below GSS Init sec context as described below o Upon receipt of the initial authentication message the server o Upon receipt of the initial authentication message the server checks the gs2 cb flag in the GS2 header and constructs a checks the gs2 cb flag in the GS2 header and constructs a chan bindings parameter for GSS Accept sec context as described chan bindings parameter for GSS Accept sec context as described below If the client channel binding flag was y and the server below If the client channel binding flag was y and the server did advertise support for channel bindings then the server MUST did advertise support for channel bindings by advertising the fail authentication If the client channel binding flag was p PLUS variant of the mechanism chosen by the client then the and the server does not support the indicated channel binding type server MUST fail authentication If the client channel binding then the server MUST fail authentication flag was p and the server does not support the indicated channel binding type then the server MUST fail authentication o If the client used an n gs2 cb flag and the server requires the use of channel binding then the server MUST fail authentication FLAG CLIENT CB SUPPORT SERVER CB SUPPORT DISPOSITION FLAG CLIENT CB SUPPORT SERVER CB SUPPORT DISPOSITION n no support N A If server disallows n no support N A If server disallows non channel bound non channel bound authentication then authentication then fail fail y Yes not required No Authentication may y Yes not required No Authentication may skipping to change at page 11 line 25 skipping to change at page 11 line 32 y Yes not required Yes Authentication must fail y Yes not required Yes Authentication must fail p Yes Yes Authentication may p Yes Yes Authentication may succeed with CB used succeed with CB used p Yes No Authentication will fail p Yes No Authentication will fail N A Yes required No Client does not even try N A Yes required No Client does not even try For more discussion s of channel bindings and the syntax of the For more discussion of channel bindings and the syntax of the channel binding data for various security protocols see RFC5056 channel binding data for various security protocols see RFC5056 5 1 Content of GSS CHANNEL BINDINGS s tructure 5 1 Content of GSS CHANNEL BINDINGS S tructure The calls to GSS Init sec context and GSS Accept sec context take a The calls to GSS Init sec context and GSS Accept sec context take a chan bindings parameter The value is a GSS CHANNEL BINDINGS chan bindings parameter The value is a GSS CHANNEL BINDINGS structure RFC5554 structure RFC5554 The initiator address type and acceptor address type fields of the The initiator address type and acceptor address type fields of the GSS CHANNEL BINDINGS structure MUST be set to 0 The initiator GSS CHANNEL BINDINGS structure MUST be set to 0 The initiator address and acceptor address fields MUST be the empty string address and acceptor address fields MUST be the empty string The application data field MUST be set to the gs2 header concatenated The application data field MUST be set to the gs2 header excluding with when a gs2 cb flag of p is used the application s channel the initial gs2 nonstd flag part concatenated with when a binding data gs2 cb flag of p is used the application s channel binding data 5 2 Default Channel Binding 5 2 Default Channel Binding A default channel binding type agreement process for all SASL A default channel binding type agreement process for all SASL application protocols that do not provide their own channel binding application protocols that do not provide their own channel binding type agreement is provided as follows type agreement is provided as follows tls unique is the default channel binding type for any application tls unique is the default channel binding type for any application that doesn t specify one that doesn t specify one Servers MUST implement the tls unique tls unique Servers MUST implement the tls unique RFC5929 channel binding I D altman tls channel bindings channel binding type if they type if they implement any channel binding Clients SHOULD implement any channel binding Clients SHOULD implement the tls implement the tls unique channel binding type if they implement unique channel binding type if they implement any channel binding any channel binding Clients and servers SHOULD choose the highest Clients and servers SHOULD choose the highest layer innermost end to layer innermost end to end TLS channel as the channel to which to end TLS channel as the channel to bind to bind Servers MUST choose the channel binding type indicated by the client Servers MUST choose the channel binding type indicated by the client or fail authentication if they don t support it or fail authentication if they don t support it 6 Examples 6 Examples Example 1 a one round trip GSS API context token exchange no Example 1 a one round trip GSS API context token exchange no channel binding optional authzid given channel binding optional authzid given C Request authentication exchange C Request authentication exchange skipping to change at page 13 line 43 skipping to change at page 14 line 16 optional authzid given optional authzid given C Request authentication exchange C Request authentication exchange S Empty Challenge S Empty Challenge C y a someuser initial C y a someuser initial context token with standard header removed context token with standard header removed S Send reply context token as is S Send reply context token as is GSS API authentication is always initiated by the client The SASL GSS API authentication is always initiated by the client The SASL framework allows either the client and server to initiate framework allows either the client or the server to initiate authentication In GS2 the server will send an initial empty authentication In GS2 the server will send an initial empty challenge zero byte string if it has not yet received a token from challenge zero byte string if it has not yet received a token from the client See section 3 of RFC4422 the client See Section 3 of RFC4422 7 Authentication Conditions 7 Authentication Conditions Authentication MUST NOT succeed if any one of the following Authentication MUST NOT succeed if any one of the following conditions are true conditions are true o GSS Init Accept sec context return anything other than o If GSS Init Accept sec context returns anything other than GSS S CONTINUE NEEDED or GSS S COMPLETE GSS S CONTINUE NEEDED or GSS S COMPLETE o If the client s initial GS2 header does not match the ABNF o If the client s initial GS2 header does not match the ABNF o In particular if the initial character of the client message is o In particular if the initial character of the client message is anything except F p n or y anything except F p n or y o If the client s GS2 channel binding flag was y and the server o If the client s GS2 channel binding flag was y and the server supports channel bindings supports channel bindings o If the client s GS2 channel binding flag was p and the server o If the client s GS2 channel binding flag was p and the server does not support the indicated channel binding does not support the indicated channel binding o If the client requires use of channel binding and the server did o If the client requires use of channel binding and the server did not advertise support for channel binding not advertise support for channel binding o Authorization of client principal i e src name in o If authorization of client principal i e src name in GSS Accept sec context to requested authzid failed GSS Accept sec context to requested authzid failed o If the client is not authorized to the requested authzid or an o If the client is not authorized to the requested authzid or an authzid could not be derived from the client s initiator principal authzid could not be derived from the client s initiator principal name name 8 GSS API Parameters 8 GSS API Parameters GS2 does not use any GSS API per message tokens Therefore the per GS2 does not use any GSS API per message tokens Therefore the per message token ret flags from GSS Init sec context and message token ret flags from GSS Init sec context and GSS Accept sec context are irrelevant implementations SHOULD NOT GSS Accept sec context are irrelevant implementations SHOULD NOT set the per message req flags set the per message req flags The mutual req flag MUST be set If channel binding is used then the The mutual req flag MUST be set Clients MUST check that the client MUST check that the corresponding ret flag is set when the corresponding ret flag is set when the context is fully established context is fully establish else authentication MUST fail else authentication MUST fail Use or non use of deleg req flag and anon req flag is an Use or non use of deleg req flag and anon req flag is an implementation specific detail SASL and GS2 implementors are implementation specific detail SASL and GS2 implementors are encouraged to provide programming interfaces by which clients may encouraged to provide programming interfaces by which clients may choose to delegate credentials and by which servers may receive them choose to delegate credentials and by which servers may receive them SASL and GS2 implementors are encouraged to provide programming SASL and GS2 implementors are encouraged to provide programming interfaces which provide a good mapping of GSS API naming options interfaces that provide a good mapping of GSS API naming options 9 Naming 9 Naming There s no requirement that any particular GSS API name types be There is no requirement that any particular GSS API name types be used However typically SASL servers will have host based acceptor used However typically SASL servers will have host based acceptor principal names see RFC2743 section 4 1 and clients will principal names see RFC2743 Section 4 1 and clients will typically have username initiator principal names see RFC2743 typically have username initiator principal names see RFC2743 section 4 2 When a host based acceptor principal name is used Section 4 2 When a host based acceptor principal name is used service hostname service is the service name specified in the service hostname service is the service name specified in the protocol s profile and hostname is the fully qualified host name protocol s profile and hostname is the fully qualified host name of of the server the server 10 GSS Inquire SASLname for mech c all 10 GSS Inquire SASLname for mech C all We specify a new GSS API utility function to allow SASL We specify a new GSS API utility function to allow SASL implementations to more efficiently identify the GSS API mechanism implementations to more efficiently identify the GSS API mechanism to that a particular SASL mechanism name refers to which a particular SASL mechanism name refers Inputs Inputs o desired mech OBJECT IDENTIFIER o desired mech OBJECT IDENTIFIER Outputs Outputs o major status INTEGER o minor status INTEGER o sasl mech name UTF 8 STRING SASL name for this o sasl mech name UTF 8 STRING SASL name for this mechanism caller must release with mechanism caller must release with GSS Release buffer GSS Release buffer o mech name UTF 8 STRING name of this mechanism possibly o mech name UTF 8 STRING name of this mechanism possibly localized caller must release with GSS Release buffer localized caller must release with GSS Release buffer o mech description UTF 8 STRING possibly localized o mech description UTF 8 STRING possibly localized description of this mechanism caller must release with description of this mechanism caller must release with GSS Release buffer GSS Release buffer Return major status codes Return major status codes o GSS S COMPLETE indicates successful completion and that o GSS S COMPLETE indicates successful completion and that skipping to change at page 15 line 37 skipping to change at page 16 line 19 GSS Release buffer GSS Release buffer Return major status codes Return major status codes o GSS S COMPLETE indicates successful completion and that o GSS S COMPLETE indicates successful completion and that output parameters holds correct information output parameters holds correct information o GSS S BAD MECH indicates that a desired mech was unsupported o GSS S BAD MECH indicates that a desired mech was unsupported by the GSS API implementation by the GSS API implementation o GSS S FAILURE indicates that the operation failed for reasons unspecified at the GSS API level The GSS Inquire SASLname for mech call is used to get the SASL The GSS Inquire SASLname for mech call is used to get the SASL mechanism name for a GSS API mechanism It also returns a name mechanism name for a GSS API mechanism It also returns a name and description of the mechanism in user friendly form and description of the mechanism in user friendly form The output variable sasl mech name will hold the IANA registered The output variable sasl mech name will hold the IANA registered mechanism name for the GSS API mechanism or if none is mechanism name for the GSS API mechanism or if none is registered a mechanism name computed from the OID as described registered a mechanism name computed from the OID as described in s ection 3 1 of this document in S ection 3 1 of this document 10 1 gss inquire saslname for mech 10 1 gss inquire saslname for mech The C binding for the GSS Inquire SASLname for mech call is as The C binding for the GSS Inquire SASLname for mech call is as follows follows As mentioned in RFC2744 routines may return GSS S FAILURE indicating an implementation specific or mechanism specific error condition further details of which are reported via the minor status parameter OM uint32 gss inquire saslname for mech OM uint32 gss inquire saslname for mech OM uint32 minor status OM uint32 minor status const gss OID desired mech const gss OID desired mech gss buffer t sasl mech name gss buffer t sasl mech name gss buffer t mech name gss buffer t mech name gss buffer t mech description gss buffer t mech description Purpose Purpose Output the SASL mechanism name of a GSS API mechanism Output the SASL mechanism name of a GSS API mechanism It also returns a name and description of the mechanism in a It also returns a name and description of the mechanism in a user friendly form user friendly form Parameters Parameters minor status Integer modify minor status Integer modify Mechanism specific status code Mechanism specific status code Function value GSS status code desired mech OID read Identifies the GSS API mechanism to query GSS S COMPLETE Successful completion sasl mech name buffer character string modify optional Buffer to receive SASL mechanism name The application must free storage associated with this name after use with a call to gss release buffer GSS S BAD MECH The desired mech OID is unsupported mech name buffer character string modify optional Buffer to receive human readable mechanism name The application must free storage associated with this name after use with a call to gss release buffer 11 GSS Inquire mech for SASLname call mech description buffer character string modify optional Buffer to receive description of mechanism The application must free storage associated with this name after use with a call to gss release buffer To allow SASL clients to more efficiently identify which GSS API Function value GSS status code mechanism a particular SASL mechanism name refers to we specify a new GSS S COMPLETE Successful completion GSS S BAD MECH The desired mech OID is unsupported 11 GSS Inquire mech for SASLname Call To allow SASL clients to more efficiently identify to which GSS API mechanism a particular SASL mechanism name refers we specify a new GSS API utility function for this purpose GSS API utility function for this purpose Inputs Inputs o sasl mech name UTF 8 STRING SASL name of mechanism o sasl mech name UTF 8 STRING SASL name of mechanism Outputs Outputs o major status INTEGER o minor status INTEGER o mech type OBJECT IDENTIFIER must be explicit mechanism o mech type OBJECT IDENTIFIER must be explicit mechanism and not default specifier and not default specifier Caller should treat as read only and should not attempt to release Return major status codes Return major status codes o GSS S COMPLETE indicates successful completion and that output o GSS S COMPLETE indicates successful completion and that output parameters holds correct information parameters holds correct information o GSS S BAD MECH indicates that no supported GSS API mechanism o GSS S BAD MECH indicates that no supported GSS API mechanism had the indicated sasl mech name had the indicated sasl mech name o GSS S FAILURE indicates that the operation failed for reasons unspecified at the GSS API level The GSS Inquire mech for SASLname call is used to get the GSS API The GSS Inquire mech for SASLname call is used to get the GSS API mechanism OID associated with a SASL mechanism name mechanism OID associated with a SASL mechanism name 11 1 gss inquire mech for saslname 11 1 gss inquire mech for saslname The C binding for the GSS Inquire mech for SASLname call is as The C binding for the GSS Inquire mech for SASLname call is as follows follows As mentioned in RFC2744 routines may return GSS S FAILURE indicating an implementation specific or mechanism specific error condition further details of which are reported via the minor status parameter OM uint32 gss inquire mech for saslname OM uint32 gss inquire mech for saslname OM uint32 minor status OM uint32 minor status const gss buffer t sasl mech name const gss buffer t sasl mech name gss OID mech type gss OID mech type Purpose Purpose Output GSS API mechanism OID of mechanism associated with given Output GSS API mechanism OID of mechanism associated with given sasl mech name sasl mech name Parameters Parameters minor status Integer modify minor status Integer modify Mechanism specific status code Mechanism specific status code Function value GSS status code sasl mech name buffer character string read Buffer with SASL mechanism name GSS S COMPLETE Successful completion mech type OID modify optional Actual mechanism used The OID returned via this parameter will be a pointer to static storage that should be treated as read only In particular the application should not attempt to free it Specify NULL if not required GSS S BAD MECH The desired mech OID is unsupported Function value GSS status code GSS S COMPLETE Successful completion GSS S BAD MECH There is no GSS API mechanism known as sasl mech name 12 Security Layers 12 Security Layers GS2 does not support SASL security layers Applications that need GS2 does not support SASL security layers Applications that need integrity or confidentiality protection can use either channel integrity or confidentiality protection can use either channel binding to a secure external channel or another SASL mechanism that binding to a secure external channel or another SASL mechanism that does provide security layers does provide

    Original URL path: http://www.josefsson.org/sasl-gs2/rfc5801-from-draft-ietf-sasl-gs2-20.diff.html (2016-04-30)
    Open archived version from archive

  • Diff: draft-ietf-sasl-gs2-20.txt - draft-ietf-sasl-gs2.txt
    1 mechanism RFC2025 is 1 3 6 1 5 5 1 1 The The OID for the Simple Public Key GSS API Mechanism SPKM 1 ASN 1 DER encoding of the OID including the tag and length is in RFC2025 is 1 3 6 1 5 5 1 1 The ASN 1 DER encoding of the OID hex 06 07 2b 06 01 05 05 01 01 The SHA 1 hash of the ASN 1 DER including the tag and length is in hex 06 07 2b 06 01 05 05 01 01 encoding is in hex 1c f8 f4 2b 5a 9f 80 fa e9 f8 31 22 6d 5d 9d 56 The SHA 1 hash of the ASN 1 DER encoding is in hex 1c f8 f4 2b 5a 27 86 61 ad Convert the first 7 octets to binary drop the last 9f 80 fa e9 f8 31 22 6d 5d 9d 56 27 86 61 ad Convert the first 7 bit and re group them in groups of 5 and convert them back to octets to binary drop the last bit and re group them in groups of decimal which results in these computations 5 and convert them back to decimal which results in these computations hex hex 1c f8 f4 2b 5a 9f 80 1c f8 f4 2b 5a 9f 80 binary binary 00011100 11111000 11110100 00101011 01011010 00011100 11111000 11110100 00101011 01011010 10011111 1000000 10011111 1000000 binary in groups of 5 binary in groups of 5 00011 10011 11100 01111 01000 01010 11010 11010 00011 10011 11100 01111 01000 01010 11010 11010 10011 11110 00000 10011 11110 00000 decimal of each group decimal of each group 3 19 28 15 8 10 26 26 19 30 0 3 19 28 15 8 10 26 26 19 30 0 base32 encoding base32 encoding D T 4 P I K 2 2 T 6 A D T 4 P I K 2 2 T 6 A The last step translates each decimal value using table 3 in Base32 The last step translates each decimal value using table 3 in Base32 RFC4648 Thus the SASL mechanism name for the SPKM 1 GSSAPI RFC4648 Thus the SASL mechanism name for the SPKM 1 GSSAPI mechanism is GS2 DT4PIK22T6A mechanism is GS2 DT4PIK22T6A The OID for the Kerberos V5 GSS API mechanism RFC1964 is The OID for the Kerberos V5 GSS API mechanism RFC1964 is 1 2 840 113554 1 2 2 and its DER encoding is in hex 06 09 2A 86 48 1 2 840 113554 1 2 2 and its DER encoding is in hex 06 09 2A 86 48 86 F7 12 01 02 02 The SHA 1 hash is 82 d2 73 25 76 6b d6 c8 45 aa 86 F7 12 01 02 02 The SHA 1 hash is 82 d2 73 25 76 6b d6 c8 45 aa 93 25 51 6a fc ff 04 b0 43 60 Convert the 7 octets to binary drop 93 25 51 6a fc ff 04 b0 43 60 Convert the 7 octets to binary drop the last bit and re group them in groups of 5 and convert them back the last bit and re group them in groups of 5 and convert them back to decimal which results in these computations to decimal which results in these computations hex hex skipping to change at page 7 line 28 skipping to change at page 7 line 51 10000 01011 01001 00111 00110 01001 01011 10110 10000 01011 01001 00111 00110 01001 01011 10110 01101 01111 01011 01101 01111 01011 decimal of each group decimal of each group 16 11 9 7 6 9 11 22 13 15 11 16 11 9 7 6 9 11 22 13 15 11 base32 encoding base32 encoding Q L J H G J L W N P L Q L J H G J L W N P L The last step translates each decimal value using table 3 in Base32 The last step translates each decimal value using table 3 in Base32 RFC4648 Thus the SASL mechanism name for the Kerberos V5 GSS API RFC4648 Thus the SASL mechanism name for the Kerberos V5 GSS API mechanism would be GS2 QLJHGJLWNPL and because this mechanism mechanism would be GS2 QLJHGJLWNPL and because this mechanism supports channel binding GS2 QLJHGJLWNPL PLUS Instead the next supports channel binding GS2 QLJHGJLWNPL PLUS Instead the next section assigns the Kerberos V5 mechanism a non hash derived section assigns the Kerberos V5 mechanism a non hash derived mechanism name mechanism name 3 4 Grandfathered mechanism n ames 3 4 Grandfathered Mechanism N ames Some older GSS API mechanisms were not specified with a SASL GS2 Some older GSS API mechanisms were not specified with a SASL GS2 mechanism name Using a shorter name can be useful nonetheless We mechanism name Using a shorter name can be useful nonetheless We specify the names GS2 KRB5 and GS2 KRB5 PLUS for the Kerberos V5 specify the names GS2 KRB5 and GS2 KRB5 PLUS for the Kerberos V5 mechanism to be used as if the original specification documented it mechanism to be used as if the original specification documented it See Section 15 see Section 15 4 SASL Authentication Exchange Message Format 4 SASL Authentication Exchange Message Format During the SASL authentication exchange for GS2 a number of messages During the SASL authentication exchange for GS2 a number of messages following the following format is sent between the client and server following the following format are sent between the client and On success this number is the same as the number of context tokens server On success this number is the same as the number of context that the GSS API mechanism would normally require in order to tokens that the GSS API mechanism would normally require in order to establish a security context On failures the exchange can be establish a security context On failures the exchange can be terminated early by any party terminated early by any party When using a GS2 mechanism the SASL client is always a GSS API When using a GS2 mechanism the SASL client is always a GSS API initiator and the SASL server is always a GSS API acceptor The initiator and the SASL server is always a GSS API acceptor The client calls GSS Init sec context and the server calls client calls GSS Init sec context and the server calls GSS Accept sec context GSS Accept sec context All the SASL authentication messages exchanged are exactly the same All the SASL authentication messages exchanged are exactly the same as the security context tokens of the GSS API mechanism except for as the security context tokens of the GSS API mechanism except for the initial security context token the initial security context token The client and server MAY send GSS API error tokens tokens output by The client and server MAY send GSS API error tokens tokens output by GSS Init sec context or GSS Accept sec context when the major GSS Init sec context or GSS Accept sec context when the major status code is other than GSS S COMPLETE or GSS S CONTINUE NEEDED status code is other than GSS S COMPLETE or GSS S CONTINUE NEEDED As this indicates an error condition after sending the token the As this indicates an error condition after sending the token the sending side should fail the authentication sending side should fail the authentication The initial security context token is modified as follows The initial security context token is modified as follows o The initial context token header see s ection 3 1 of RFC2743 o The initial context token header see S ection 3 1 of RFC2743 MUST be removed if present If the header is not present the MUST be removed if present If the header is not present the client MUST send a gs2 nonstd flag flag see below On the client MUST send a gs2 nonstd flag flag see below On the server side this header MUST be recomputed and restored prior to server side this header MUST be recomputed and restored prior to passing the token to GSS Accept sec context except when the gs2 passing the token to GSS Accept sec context except when the gs2 nonstd flag is sent nonstd flag is sent o A GS2 header MUST be prefixed to the resulting initial context o A GS2 header MUST be prefixed to the resulting initial context token This header has the form gs2 header given below in ABNF token This header has the form gs2 header given below in ABNF RFC5234 RFC5234 The figure below describes the permissible attributes their use and The figure below describes the permissible attributes their use and the format of their values All attribute names are single US ASCII the format of their values All attribute names are single US ASCII letters and are case sensitive letters and are case sensitive UTF8 1 safe x01 2B x2D 3C x3E 7F UTF8 1 safe x01 2B x2D 3C x3E 7F As UTF8 1 in RFC 3629 except As UTF8 1 in RFC 3629 except NUL and NUL and UTF8 2 as defined in RFC 3629 STD 63 UTF8 2 as defined in RFC 3629 STD 63 UTF8 3 as defined in RFC 3629 STD 63 UTF8 3 as defined in RFC 3629 STD 63 UTF8 4 as defined in RFC 3629 STD 63 UTF8 4 as defined in RFC 3629 STD 63 UTF8 char safe UTF8 1 safe UTF8 2 UTF8 3 UTF8 4 UTF8 char safe UTF8 1 safe UTF8 2 UTF8 3 UTF8 4 saslname 1 UTF8 char safe 2C 3D saslname 1 UTF8 char safe 2C 3D gs2 authzid a saslname gs2 authzid a saslname GS2 has to transport an authzid since GS2 has to transport an authzid since the GSS API has no equivalent the GSS API has no equivalent gs2 nonstd flag F gs2 nonstd flag F F means the mechanism is not a F means the mechanism is not a standard GSS API mechanism in that the standard GSS API mechanism in that the RFC 2743 s ection 3 1 header was missing RFC 2743 S ection 3 1 header was missing cb name 1 ALPHA DIGIT cb name 1 ALPHA DIGIT See RFC 5056 section 7 See RFC 5056 Section 7 gs2 cb flag p cb name n y gs2 cb flag p cb name n y GS2 channel binding CB flag GS2 channel binding CB flag p client supports and used CB p client supports and used CB n client does not support CB n client does not support CB y client supports CB thinks the server y client supports CB thinks the server does not does not gs2 header gs2 nonstd flag gs2 cb flag gs2 authzid gs2 header gs2 nonstd flag gs2 cb flag gs2 authzid The GS2 header is gs2 header The GS2 header is gs2 header When the gs2 nonstd flag flag is present the client did not find When the gs2 nonstd flag flag is present the client did not find remove a token header RFC2743 s ection 3 1 from the initial token remove a token header RFC2743 S ection 3 1 from the initial token returned by GSS Init sec context This signals to the server that it returned by GSS Init sec context This signals to the server that it MUST NOT re add the data that is normally removed by the client MUST NOT re add the data that is normally removed by the client The gs2 cb flag signals the channel binding mode One of p n The gs2 cb flag signals the channel binding mode One of p n or y is used A p means the client supports and used a channel or y is used A p means the client supports and used a channel binding and the name of the channel binding type is indicated A binding and the name of the channel binding type is indicated A n n means that the client does not support channel binding A y n means that the client does not support channel binding A y means the client supports channel binding but believes the server means the client supports channel binding but believes the server does not support it so it did not use a channel binding See the does not support it so it did not use a channel binding See the next section for more details next section for more details The gs2 authzid holds the SASL authorization identity It is The gs2 authzid holds the SASL authorization identity It is encoded using UTF 8 RFC3629 with three exceptions encoded using UTF 8 RFC3629 with three exceptions o The NUL character is forbidden as required by section 3 4 1 of o The NUL character is forbidden as required by section 3 4 1 of RFC4422 RFC4422 o The server MUST replace any comma in the string with 2C o The server MUST replace any comma in the string with 2C o The server MUST replace any equals in the string with 3D o The server MUST replace any equals in the string with 3D Upon receipt of this value the server verifies its correctness Upon receipt of this value the server verifies its correctness according to the used SASL protocol profile Failed verification according to the used SASL protocol profile Failed verification results in a failed authentication exchange results in a failed authentication exchange 5 Channel Bindings 5 Channel Bindings GS2 supports channel binding to external secure channels such as GS2 supports channel binding to external secure channels such as TLS Clients and servers may or may not support channel binding TLS Clients and servers may or may not support channel binding therefore the use of channel binding is negotiable GS2 does not therefore the use of channel binding is negotiable However GS2 provide security layers however therefore it is imperative that GS2 does not provide security layers therefore it is imperative that provide integrity protection for the negotiation of channel binding GS2 provide integrity protection for the negotiation of channel binding Use of channel binding is negotiated as follows Use of channel binding is negotiated as follows o Servers SHOULD advertise both non PLUS and the PLUS variant of o Servers that support the use of channel binding SHOULD advertise each GS2 mechanism name If the server cannot support channel both the non PLUS and PLUS variant of each GS2 mechanism name If binding it MAY advertise only the non PLUS variant If the the server cannot support channel binding it SHOULD advertise server would never succeed authentication of the non PLUS variant only the non PLUS variant If the server would never succeed in due to policy reasons it MAY advertise only the PLUS variant the authentication of the non PLUS variant due to policy reasons o If the client negotiates mechanisms then clients MUST select the it MUST advertise only the PLUS variant PLUS variant if offered by the server Otherwise the client does not negotiate mechanisms if the client has no prior knowledge about mechanisms supported by the server and wasn t explicitly configured to use a particular variant of the GS2 mechanism then it MUST select only non PLUS version of the GS2 mechanism o If the client does not support channel binding then it MUST use a n gs2 cb flag o If the client supports channel binding and the server does not o If the client supports channel binding and the server does not appear to i e the client did not see the PLUS name then the appear to i e the client did not see the PLUS name advertised client MUST either fail authentication or it MUST chose the non by the server then the client MUST NOT use an n gs2 cb flag PLUS mechanism name and use a y gs2 cb flag o Clients that support mechanism negotiation and channel binding o If the client supports channel binding and the server appears to MUST use a p gs2 cb flag when the server offers the PLUS variant support it i e the client see the PLUS name or if the client of the desired GS2 mechanism wishes to use channel binding but the client does not negotiate o If the client does not support channel binding then it MUST use mechanisms then the client MUST use a p gs2 cb flag to indicate an n gs2 cb flag Conversely if the client requires the use of the channel binding type it is using channel binding then it MUST use a p gs2 cb flag Clients that o The client generate the chan bindings input parameter for do not support mechanism negotiation never use a y gs2 cb flag they use either p or n according to whether they require and support the use of channel binding or whether they do not respectively o The client generates the chan bindings input parameter for GSS Init sec context as described below GSS Init sec context as described below o Upon receipt of the initial authentication message the server o Upon receipt of the initial authentication message the server checks the gs2 cb flag in the GS2 header and constructs a checks the gs2 cb flag in the GS2 header and constructs a chan bindings parameter for GSS Accept sec context as described chan bindings parameter for GSS Accept sec context as described below If the client channel binding flag was y and the server below If the client channel binding flag was y and the server did advertise support for channel bindings then the server MUST did advertise support for channel bindings by advertising the fail authentication If the client channel binding flag was p PLUS variant of the mechanism chosen by the client then the and the server does not support the indicated channel binding type server MUST fail authentication If the client channel binding then the server MUST fail authentication flag was p and the server does not support the indicated channel binding type then the server MUST fail authentication o If the client used an n gs2 cb flag and the server requires the use of channel binding then the server MUST fail authentication FLAG CLIENT CB SUPPORT SERVER CB SUPPORT DISPOSITION FLAG CLIENT CB SUPPORT SERVER CB SUPPORT DISPOSITION n no support N A If server disallows n no support N A If server disallows non channel bound non channel bound authentication then authentication then fail fail y Yes not required No Authentication may y Yes not required No Authentication may skipping to change at page 11 line 25 skipping to change at page 11 line 28 y Yes not required Yes Authentication must fail y Yes not required Yes Authentication must fail p Yes Yes Authentication may p Yes Yes Authentication may succeed with CB used succeed with CB used p Yes No Authentication will fail p Yes No Authentication will fail N A Yes required No Client does not even try N A Yes required No Client does not even try For more discussion s of channel bindings and the syntax of the For more discussion of channel bindings and the syntax of the channel binding data for various security protocols see RFC5056 channel binding data for various security protocols see RFC5056 5 1 Content of GSS CHANNEL BINDINGS s tructure 5 1 Content of GSS CHANNEL BINDINGS S tructure The calls to GSS Init sec context and GSS Accept sec context take a The calls to GSS Init sec context and GSS Accept sec context take a chan bindings parameter The value is a GSS CHANNEL BINDINGS chan bindings parameter The value is a GSS CHANNEL BINDINGS structure RFC5554 structure RFC5554 The initiator address type and acceptor address type fields of the The initiator address type and acceptor address type fields of the GSS CHANNEL BINDINGS structure MUST be set to 0 The initiator GSS CHANNEL BINDINGS structure MUST be set to 0 The initiator address and acceptor address fields MUST be the empty string address and acceptor address fields MUST be the empty string The application data field MUST be set to the gs2 header concatenated The application data field MUST be set to the gs2 header excluding with when a gs2 cb flag of p is used the application s channel the initial gs2 nonstd flag part concatenated with when a binding data gs2 cb flag of p is used the application s channel binding data 5 2 Default Channel Binding 5 2 Default Channel Binding A default channel binding type agreement process for all SASL A default channel binding type agreement process for all SASL application protocols that do not provide their own channel binding application protocols that do not provide their own channel binding type agreement is provided as follows type agreement is provided as follows tls unique is the default channel binding type for any application tls unique is the default channel binding type for any application that doesn t specify one that doesn t specify one Servers MUST implement the tls unique tls unique Servers MUST implement the tls unique RFC5929 channel binding I D altman tls channel bindings channel binding type if they type if they implement any channel binding Clients SHOULD implement any channel binding Clients SHOULD implement the tls implement the tls unique channel binding type if they implement unique channel binding type if they implement any channel binding any channel binding Clients and servers SHOULD choose the highest Clients and servers SHOULD choose the highest layer innermost end to layer innermost end to end TLS channel as the channel to which to end TLS channel as the channel to bind to bind Servers MUST choose the channel binding type indicated by the client Servers MUST choose the channel binding type indicated by the client or fail authentication if they don t support it or fail authentication if they don t support it 6 Examples 6 Examples Example 1 a one round trip GSS API context token exchange no Example 1 a one round trip GSS API context token exchange no channel binding optional authzid given channel binding optional authzid given C Request authentication exchange C Request authentication exchange skipping to change at page 13 line 43 skipping to change at page 14 line 16 optional authzid given optional authzid given C Request authentication exchange C Request authentication exchange S Empty Challenge S Empty Challenge C y a someuser initial C y a someuser initial context token with standard header removed context token with standard header removed S Send reply context token as is S Send reply context token as is GSS API authentication is always initiated by the client The SASL GSS API authentication is always initiated by the client The SASL framework allows either the client and server to initiate framework allows either the client or the server to initiate authentication In GS2 the server will send an initial empty authentication In GS2 the server will send an initial empty challenge zero byte string if it has not yet received a token from challenge zero byte string if it has not yet received a token from the client See section 3 of RFC4422 the client See Section 3 of RFC4422 7 Authentication Conditions 7 Authentication Conditions Authentication MUST NOT succeed if any one of the following Authentication MUST NOT succeed if any one of the following conditions are true conditions are true o GSS Init Accept sec context return anything other than o If GSS Init Accept sec context returns anything other than GSS S CONTINUE NEEDED or GSS S COMPLETE GSS S CONTINUE NEEDED or GSS S COMPLETE o If the client s initial GS2 header does not match the ABNF o If the client s initial GS2 header does not match the ABNF o In particular if the initial character of the client message is o In particular if the initial character of the client message is anything except F p n or y anything except F p n or y o If the client s GS2 channel binding flag was y and the server o If the client s GS2 channel binding flag was y and the server supports channel bindings supports channel bindings o If the client s GS2 channel binding flag was p and the server o If the client s GS2 channel binding flag was p and the server does not support the indicated channel binding does not support the indicated channel binding o If the client requires use of channel binding and the server did o If the client requires use of channel binding and the server did not advertise support for channel binding not advertise support for channel binding o A uthorization of client principal i e src name in o If a uthorization of client principal i e src name in GSS Accept sec context to requested authzid failed GSS Accept sec context to requested authzid failed o If the client is not authorized to the requested authzid or an o If the client is not authorized to the requested authzid or an authzid could not be derived from the client s initiator principal authzid could not be derived from the client s initiator principal name name 8 GSS API Parameters 8 GSS API Parameters GS2 does not use any GSS API per message tokens Therefore the per GS2 does not use any GSS API per message tokens Therefore the per message token ret flags from GSS Init sec context and message token ret flags from GSS Init sec context and GSS Accept sec context are irrelevant implementations SHOULD NOT GSS Accept sec context are irrelevant implementations SHOULD NOT set the per message req flags set the per message req flags The mutual req flag MUST be set If channel binding is used then the The mutual req flag MUST be set Clients MUST check that the client MUST check that the corresponding ret flag is set when the corresponding ret flag is set when the context is fully established context is fully establish else authentication MUST fail else authentication MUST fail Use or non use of deleg req flag and anon req flag is an Use or non use of deleg req flag and anon req flag is an implementation specific detail SASL and GS2 implementors are implementation specific detail SASL and GS2 implementors are encouraged to provide programming interfaces by which clients may encouraged to provide programming interfaces by which clients may choose to delegate credentials and by which servers may receive them choose to delegate credentials and by which servers may receive them SASL and GS2 implementors are encouraged to provide programming SASL and GS2 implementors are encouraged to provide programming interfaces which provide a good mapping of GSS API naming options interfaces that provide a good mapping of GSS API naming options 9 Naming 9 Naming There s no requirement that any particular GSS API name types be There is no requirement that any particular GSS API name types be used However typically SASL servers will have host based acceptor used However typically SASL servers will have host based acceptor principal names see RFC2743 section 4 1 and clients will principal names see RFC2743 Section 4 1 and clients will typically have username initiator principal names see RFC2743 typically have username initiator principal names see RFC2743 section 4 2 When a host based acceptor principal name is used Section 4 2 When a host based acceptor principal name is used service hostname service is the service name specified in the service hostname service is the service name specified in the protocol s profile and hostname is the fully qualified host name protocol s profile and hostname is the fully qualified host name of of the server the server 10 GSS Inquire SASLname for mech c all 10 GSS Inquire SASLname for mech C all We specify a new GSS API utility function to allow SASL We specify a new GSS API utility function to allow SASL implementations to more efficiently identify the GSS API mechanism implementations to more efficiently identify the GSS API mechanism to that a particular SASL mechanism name refers to which a particular SASL mechanism name refers Inputs Inputs o desired mech OBJECT IDENTIFIER o desired mech OBJECT IDENTIFIER Outputs Outputs o major status INTEGER o minor status INTEGER o sasl mech name UTF 8 STRING SASL name for this o sasl mech name UTF 8 STRING SASL name for this mechanism caller must release with mechanism caller must release with GSS Release buffer GSS Release buffer o mech name UTF 8 STRING name of this mechanism possibly o mech name UTF 8 STRING name of this mechanism possibly localized caller must release with GSS Release buffer localized caller must release with GSS Release buffer o mech description UTF 8 STRING possibly localized o mech description UTF 8 STRING possibly localized description of this mechanism caller must release with description of this mechanism caller must release with GSS Release buffer GSS Release buffer Return major status codes Return major status codes o GSS S COMPLETE indicates successful completion and that o GSS S COMPLETE indicates successful completion and that output parameters holds correct information output parameters holds correct information o GSS S BAD MECH indicates that a desired mech was unsupported o GSS S BAD MECH indicates that a desired mech was unsupported by the GSS API implementation by the GSS API implementation o GSS S FAILURE indicates that the operation failed for reasons unspecified at the GSS API level The GSS Inquire SASLname for mech call is used to get the SASL The GSS Inquire SASLname for mech call is used to get the SASL mechanism name for a GSS API mechanism It also returns a name mechanism name for a GSS API mechanism It also returns a name and description of the mechanism in user friendly form and description of the mechanism in user friendly form The output variable sasl mech name will hold the IANA registered The output variable sasl mech name will hold the IANA registered mechanism name for the GSS API mechanism or if none is mechanism name for the GSS API mechanism or if none is registered a mechanism name computed from the OID as described registered a mechanism name computed from the OID as described in s ection 3 1 of this document in S ection 3 1 of this document 10 1 gss inquire saslname for mech 10 1 gss inquire saslname for mech The C binding for the GSS Inquire SASLname for mech call is as The C binding for the GSS Inquire SASLname for mech call is as follows follows As mentioned in RFC2744 routines may return GSS S FAILURE indicating an implementation specific or mechanism specific error condition further details of which are reported via the minor status parameter OM uint32 gss inquire saslname for mech OM uint32 gss inquire saslname for mech OM uint32 minor status OM uint32 minor status const gss OID desired mech const gss OID desired mech gss buffer t sasl mech name gss buffer t sasl mech name gss buffer t mech name gss buffer t mech name gss buffer t mech description gss buffer t mech description Purpose Purpose Output the SASL mechanism name of a GSS API mechanism Output the SASL mechanism name of a GSS API mechanism It also returns a name and description of the mechanism in a It also returns a name and description of the mechanism in a user friendly form user friendly form Parameters Parameters minor status Integer modify minor status Integer modify Mechanism specific status code Mechanism specific status code Function value GSS status code desired mech OID read Identifies the GSS API mechanism to query GSS S COMPLETE Successful completion sasl mech name buffer character string modify optional Buffer to receive SASL mechanism name The application must free storage associated with this name after use with a call to gss release buffer GSS S BAD MECH The desired mech OID is unsupported mech name buffer character string modify optional Buffer to receive human readable mechanism name The application must free storage associated with this name after use with a call to gss release buffer 11 GSS Inquire mech for SASLname call mech description buffer character string modify optional Buffer to receive description of mechanism The application must free storage associated with this name after use with a call to gss release buffer To allow SASL clients to more efficiently identify which GSS API Function value GSS status code mechanism a particular SASL mechanism name refers to we specify a new GSS S COMPLETE Successful completion GSS S BAD MECH The desired mech OID is unsupported 11 GSS Inquire mech for SASLname Call To allow SASL clients to more efficiently identify to which GSS API mechanism a particular SASL mechanism name refers we specify a new GSS API utility function for this purpose GSS API utility function for this purpose Inputs Inputs o sasl mech name UTF 8 STRING SASL name of mechanism o sasl mech name UTF 8 STRING SASL name of mechanism Outputs Outputs o major status INTEGER o minor status INTEGER o mech type OBJECT IDENTIFIER must be explicit mechanism o mech type OBJECT IDENTIFIER must be explicit mechanism and not default specifier and not default specifier Caller should treat as read only and should not attempt to release Return major status codes Return major status codes o GSS S COMPLETE indicates successful completion and that output o GSS S COMPLETE indicates successful completion and that output parameters holds correct information parameters holds correct information o GSS S BAD MECH indicates that no supported GSS API mechanism o GSS S BAD MECH indicates that no supported GSS API mechanism had the indicated sasl mech name had the indicated sasl mech name o GSS S FAILURE indicates that the operation failed for reasons unspecified at the GSS API level The GSS Inquire mech for SASLname call is used to get the GSS API The GSS Inquire mech for SASLname call is used to get the GSS API mechanism OID associated with a SASL mechanism name mechanism OID associated with a SASL mechanism name 11 1 gss inquire mech for saslname 11 1 gss inquire mech for saslname The C binding for the GSS Inquire mech for SASLname call is as The C binding for the GSS Inquire mech for SASLname call is as follows follows As mentioned in RFC2744 routines may return GSS S FAILURE indicating an implementation specific or mechanism specific error condition further details of which are reported via the minor status parameter OM uint32 gss inquire mech for saslname OM uint32 gss inquire mech for saslname OM uint32 minor status OM uint32 minor status const gss buffer t sasl mech name const gss buffer t sasl mech name gss OID mech type gss OID mech type Purpose Purpose Output GSS API mechanism OID of mechanism associated with given Output GSS API mechanism OID of mechanism associated with given sasl mech name sasl mech name Parameters Parameters minor status Integer modify minor status Integer modify Mechanism specific status code Mechanism specific status code Function value GSS status code sasl mech name buffer character string read Buffer with SASL mechanism name GSS S COMPLETE Successful completion mech type OID modify optional Actual mechanism used The OID returned via this parameter will be a pointer to static storage that should be treated as read only In particular the application should not attempt to free it Specify NULL if not required GSS S BAD MECH The desired mech OID is unsupported Function value GSS status code GSS S COMPLETE Successful completion GSS S BAD MECH

    Original URL path: http://www.josefsson.org/sasl-gs2/draft-ietf-sasl-gs2-from--20.diff.html (2016-04-30)
    Open archived version from archive

  • Diff: draft-ietf-sasl-gs2-19.txt - draft-ietf-sasl-gs2-20.txt
    ietf org ietf 1id abstracts txt http www ietf org ietf 1id abstracts txt The list of Internet Draft Shadow Directories can be accessed at The list of Internet Draft Shadow Directories can be accessed at http www ietf org shadow html http www ietf org shadow html This Internet Draft will expire on July 1 2 2010 This Internet Draft will expire on July 1 3 2010 Copyright Notice Copyright Notice Copyright c 2010 IETF Trust and the persons identified as the Copyright c 2010 IETF Trust and the persons identified as the document authors All rights reserved document authors All rights reserved This document is subject to BCP 78 and the IETF Trust s Legal This document is subject to BCP 78 and the IETF Trust s Legal Provisions Relating to IETF Documents Provisions Relating to IETF Documents http trustee ietf org license info in effect on the date of http trustee ietf org license info in effect on the date of publication of this document Please review these documents publication of this document Please review these documents skipping to change at page 11 line 5 skipping to change at page 11 line 5 GSS Init sec context as described below GSS Init sec context as described below o Upon receipt of the initial authentication message the server o Upon receipt of the initial authentication message the server checks the gs2 cb flag in the GS2 header and constructs a checks the gs2 cb flag in the GS2 header and constructs a chan bindings parameter for GSS Accept sec context as described chan bindings parameter for GSS Accept sec context as described below If the client channel binding flag was y and the server below If the client channel binding flag was y and the server did advertise

    Original URL path: http://www.josefsson.org/sasl-gs2/draft-ietf-sasl-gs2-20-from-19.diff.html (2016-04-30)
    Open archived version from archive

  • Diff: draft-ietf-sasl-gs2-18.txt - draft-ietf-sasl-gs2-19.txt
    the B ase32 alphabet are not relevant to this use of Base32 If any padding or non alphabet not relevant to this use of Base32 If any padding or non alphabet characters are encountered the name is not a GS2 family mechanism characters are encountered the name is not a GS2 family mechanism name This name denotes that the server does not support channel name This name denotes that the server does not support channel binding Add the suffix PLUS and the resulting name denotes that binding Add the suffix PLUS and the resulting name denotes that the server does support channel binding the server does support channel binding A GS2 mechanism that has a non OID derived SASL mechanism name is A GS2 mechanism that has a non OID derived SASL mechanism name is said to have a user friendly SASL mechanism name said to have a user friendly SASL mechanism name 3 2 Computing mechanism names manually 3 2 Computing mechanism names manually The hash derived GS2 SASL mechanism name may be computed manually The hash derived GS2 SASL mechanism name may be computed manually This is useful when the set of supported GSS API mechanisms is known This is useful when the set of supported GSS API mechanisms is known in advance This obliterate the need to implement Base32 SHA 1 and in advance This eliminates the need to implement Base32 SHA 1 and DER in the SASL mechanism The computed mechanism name can be used DER in the SASL mechanism The computed mechanism name can be used directly in the implementation and the implementation need not directly in the implementation and the implementation need not be concern itself with that the mechanism is part of a mechanism family concerned if the mechanism is part of a mechanism family 3 3 Examples 3 3 Examples The OID for the SPKM 1 mechanism RFC2025 is 1 3 6 1 5 5 1 1 The The OID for the SPKM 1 mechanism RFC2025 is 1 3 6 1 5 5 1 1 The ASN 1 DER encoding of the OID including the tag and length is in ASN 1 DER encoding of the OID including the tag and length is in hex 06 07 2b 06 01 05 05 01 01 The SHA 1 hash of the ASN 1 DER hex 06 07 2b 06 01 05 05 01 01 The SHA 1 hash of the ASN 1 DER encoding is in hex 1c f8 f4 2b 5a 9f 80 fa e9 f8 31 22 6d 5d 9d 56 encoding is in hex 1c f8 f4 2b 5a 9f 80 fa e9 f8 31 22 6d 5d 9d 56 27 86 61 ad Convert the first 7 octets to binary drop the last 27 86 61 ad Convert the first 7 octets to binary drop the last bit and re group them in groups of 5 and convert them back to bit and re group them in groups of 5 and convert them back to decimal which results in these computations decimal which results in these computations skipping to change at page 6 line 44 skipping to change at page 6 line 47 binary in groups of 5 binary in groups of 5 00011 10011 11100 01111 01000 01010 11010 11010 00011 10011 11100 01111 01000 01010 11010 11010 10011 11110 00000 10011 11110 00000 decimal of each group decimal of each group 3 19 28 15 8 10 26 26 19 30 0 3 19 28 15 8 10 26 26 19 30 0 base32 encoding base32 encoding D T 4 P I K 2 2 T 6 A D T 4 P I K 2 2 T 6 A The last step translate each decimal value using table 3 in Base32 The last step translate s each decimal value using table 3 in Base32 RFC4648 Thus the SASL mechanism name for the SPKM 1 GSSAPI RFC4648 Thus the SASL mechanism name for the SPKM 1 GSSAPI mechanism is GS2 DT4PIK22T6A mechanism is GS2 DT4PIK22T6A The OID for the Kerberos V5 GSS API mechanism RFC1964 is The OID for the Kerberos V5 GSS API mechanism RFC1964 is 1 2 840 113554 1 2 2 and its DER encoding is in hex 06 09 2A 86 48 1 2 840 113554 1 2 2 and its DER encoding is in hex 06 09 2A 86 48 86 F7 12 01 02 02 The SHA 1 hash is 82 d2 73 25 76 6b d6 c8 45 aa 86 F7 12 01 02 02 The SHA 1 hash is 82 d2 73 25 76 6b d6 c8 45 aa 93 25 51 6a fc ff 04 b0 43 60 Convert the 7 octets to binary drop 93 25 51 6a fc ff 04 b0 43 60 Convert the 7 octets to binary drop the last bit and re group them in groups of 5 and convert them back the last bit and re group them in groups of 5 and convert them back to decimal which results in these computations to decimal which results in these computations skipping to change at page 7 line 23 skipping to change at page 7 line 27 binary in groups of 5 binary in groups of 5 10000 01011 01001 00111 00110 01001 01011 10110 10000 01011 01001 00111 00110 01001 01011 10110 01101 01111 01011 01101 01111 01011 decimal of each group decimal of each group 16 11 9 7 6 9 11 22 13 15 11 16 11 9 7 6 9 11 22 13 15 11 base32 encoding base32 encoding Q L J H G J L W N P L Q L J H G J L W N P L The last step translate each decimal value using table 3 in Base32 The last step translate s each decimal value using table 3 in Base32 RFC4648 Thus the SASL mechanism name for the Kerberos V5 GSSAPI RFC4648 Thus the SASL mechanism name for the Kerberos V5 GSSAPI mechanism would be GS2 QLJHGJLWNPL and because this mechanism mechanism would be GS2 QLJHGJLWNPL and because this mechanism supports channel binding GS2 QLJHGJLWNPL PLUS Instead the next supports channel binding GS2 QLJHGJLWNPL PLUS Instead the next section assigns the Kerberos V5 mechanism a non hash derived section assigns the Kerberos V5 mechanism a non hash derived mechanism name mechanism name 3 4 Grandfathered mechanism names 3 4 Grandfathered mechanism names Some older GSS API mechanisms were not specified with a SASL GS2 Some older GSS API mechanisms were not specified with a SASL GS2 mechanism name Using a shorter name can be useful nonetheless We mechanism name Using a shorter name can be useful nonetheless We skipping to change at page 8 line 12 skipping to change at page 8 line 17 client calls GSS Init sec context and the server calls client calls GSS Init sec context and the server calls GSS Accept sec context GSS Accept sec context All the SASL authentication messages exchanged are exactly the same All the SASL authentication messages exchanged are exactly the same as the security context tokens of the GSS API mechanism except for as the security context tokens of the GSS API mechanism except for the initial security context token the initial security context token The client and server MAY send GSS API error tokens tokens output by The client and server MAY send GSS API error tokens tokens output by GSS Init sec context or GSS Accept sec context when the major GSS Init sec context or GSS Accept sec context when the major status code is other than GSS S COMPLETE or GSS S CONTINUE NEEDED status code is other than GSS S COMPLETE or GSS S CONTINUE NEEDED As this indicate an error condition after sending the token the As this indicate s an error condition after sending the token the sending side should fail the authentication sending side should fail the authentication The initial security context token is modified as follows The initial security context token is modified as follows o The RFC2743 section 3 1 initial context token header MUST be o The initial context token header see section 3 1 of RFC2743 removed if present If the header is not present the client MUST MUST be removed if present If the header is not present the send a gs2 nonstd flag flag see below On the server side client MUST send a gs2 nonstd flag flag see below On the this header MUST be recomputed and restored prior to passing the server side this header MUST be recomputed and restored prior to token to GSS Accept sec context except when the gs2 nonstd flag passing the token to GSS Accept sec context except when the gs2 is sent nonstd flag is sent o A GS2 header MUST be prefixed to the resulting initial context o A GS2 header MUST be prefixed to the resulting initial context token This header has the form gs2 header given below in ABNF token This header has the form gs2 header given below in ABNF RFC5234 RFC5234 The figure below describes the permissible attributes their use and The figure below describes the permissible attributes their use and the format of their values All attribute names are single US ASCII the format of their values All attribute names are single US ASCII letters and are case sensitive letters and are case sensitive UTF8 1 safe x01 2B x2D 3C x3E 7F UTF8 1 safe x01 2B x2D 3C x3E 7F As UTF8 1 in RFC 3629 except As UTF8 1 in RFC 3629 except skipping to change at page 9 line 33 skipping to change at page 9 line 33 gs2 cb flag p cb name n y gs2 cb flag p cb name n y GS2 channel binding CB flag GS2 channel binding CB flag p client supports and used CB p client supports and used CB n client does not support CB n client does not support CB y client supports CB thinks the server y client supports CB thinks the server does not does not gs2 header gs2 nonstd flag gs2 cb flag gs2 authzid gs2 header gs2 nonstd flag gs2 cb flag gs2 authzid The GS2 header is gs2 header The GS2 header is gs2 header When the gs2 nonstd flag flag is present the client did not find When the gs2 nonstd flag flag is present the client did not find remove a RFC2743 section 3 1 token header from the initial token remove a token header RFC2743 section 3 1 from the initial token returned by GSS Init sec context This signals to the server that it returned by GSS Init sec context This signals to the server that it MUST NOT re add the data that is normally removed by the client MUST NOT re add the data that is normally removed by the client The gs2 cb flag signals the channel binding mode One of p n The gs2 cb flag signals the channel binding mode One of p n or y is used A p means the client supports and used a channel or y is used A p means the client supports and used a channel binding and the name of the channel binding type is indicated A binding and the name of the channel binding type is indicated A n means that the client does not support channel binding A y n means that the client does not support channel binding A y means the client supports channel binding but believes the server means the client supports channel binding but believes the server does not support it so it did not use a channel binding See the does not support it so it did not use a channel binding See the next section for more details next section for more details The gs2 authzid holds the SASL authorization identity It is The gs2 authzid holds the SASL authorization identity It is encoded using UTF 8 RFC3629 with three exceptions encoded using UTF 8 RFC3629 with three exceptions o The NUL character s is forbidden as required by section 3 4 1 of o The NUL character is forbidden as required by section 3 4 1 of RFC4422 RFC4422 o The server MUST replace any comma in the string with 2C o The server MUST replace any comma in the string with 2C o The server MUST replace any equals in the string with 3D o The server MUST replace any equals in the string with 3D Upon the receipt of this value the server verifies its correctness Upon receipt of this value the server verifies its correctness according to the used SASL protocol profile Failed verification according to the used SASL protocol profile Failed verification results in failed authentication exchange results in a failed authentication exchange 5 Channel Bindings 5 Channel Bindings GS2 supports channel binding to external secure channels such as GS2 supports channel binding to external secure channels such as TLS Clients and servers may or may not support channel binding TLS Clients and servers may or may not support channel binding therefore the use of channel binding is negotiable GS2 does not therefore the use of channel binding is negotiable GS2 does not provide security layers however therefore it is imperative that GS2 provide security layers however therefore it is imperative that GS2 provide integrity protection for the negotiation of channel binding provide integrity protection for the negotiation of channel binding Use of channel binding is negotiated as follows Use of channel binding is negotiated as follows skipping to change at page 10 line 48 skipping to change at page 11 line 5 GSS Init sec context as described below GSS Init sec context as described below o Upon receipt of the initial authentication message the server o Upon receipt of the initial authentication message the server checks the gs2 cb flag in the GS2 header and constructs a checks the gs2 cb flag in the GS2 header and constructs a chan bindings parameter for GSS Accept sec context as described chan bindings parameter for GSS Accept sec context as described below If the client channel binding flag was y and the server below If the client channel binding flag was y and the server did advertise support for channel bindings then the server MUST did advertise support for channel bindings then the server MUST fail authentication If the client channel binding flag was p fail authentication If the client channel binding flag was p and the server does not support the indicated channel binding type and the server does not support the indicated channel binding type then the server MUST fail authentication then the server MUST fail authentication FLAG SERVER CB SUPPORT DISPOSITION n Irrelevant If server disallows non channel bound authentication then fail y CB not supported Authentication may succeed y CB supported Authentication must fail p CB supported Authentication may succeed with CB used p CB not supported Authentication will fail none CB not supported Client does not even try because it insists on CB For more discussions of channel bindings and the syntax of the For more discussions of channel bindings and the syntax of the channel binding data for various security protocols see RFC5056 channel binding data for various security protocols see RFC5056 5 1 Content of GSS CHANNEL BINDINGS structure 5 1 Content of GSS CHANNEL BINDINGS structure The calls to GSS Init sec context and GSS Accept sec context take s a The calls to GSS Init sec context and GSS Accept sec context take a chan bindings parameter The value is a GSS CHANNEL BINDINGS chan bindings parameter The value is a GSS CHANNEL BINDINGS structure RFC5554 structure RFC5554 The initiator address type and acceptor address type fields of the The initiator address type and acceptor address type fields of the GSS CHANNEL BINDINGS structure MUST be set to 0 The initiator GSS CHANNEL BINDINGS structure MUST be set to 0 The initiator address and acceptor address fields MUST be the empty string address and acceptor address fields MUST be the empty string The application data field MUST be set to the gs2 header concatenated The application data field MUST be set to the gs2 header concatenated with when a gs2 cb flag of p is used the application s channel with when a gs2 cb flag of p is used the application s channel binding data binding data skipping to change at page 14 line 7 skipping to change at page 14 line 25 o If the client requires use of channel binding and the server did o If the client requires use of channel binding and the server did not advertise support for channel binding not advertise support for channel binding o Authorization of client principal i e src name in o Authorization of client principal i e src name in GSS Accept sec context to requested authzid failed GSS Accept sec context to requested authzid failed o If the client is not authorized to the requested authzid or an o If the client is not authorized to the requested authzid or an authzid could not be derived from the client s initiator principal authzid could not be derived from the client s initiator principal name name 8 GSS API Parameters 8 GSS API Parameters GS2 does not use any GSS API per message tokens Therefore the GS2 does not use any GSS API per message tokens Therefore the per setting of req flags related to per message tokens is irrelevant message token ret flags from GSS Init sec context and GSS Accept sec context are irrelevant implementations SHOULD NOT set the per message req flags The mutual req flag MUST be set If channel binding is used then the The mutual req flag MUST be set If channel binding is used then the client MUST check that the

    Original URL path: http://www.josefsson.org/sasl-gs2/draft-ietf-sasl-gs2-19-from-8.diff.html (2016-04-30)
    Open archived version from archive

  • Diff: draft-ietf-sasl-gs2-17.txt - draft-ietf-sasl-gs2-18.txt
    mech call 13 10 1 gss inquire saslname for mech 15 10 1 gss inquire saslname for mech 15 11 GSS Inquire mech for SASLname call 15 11 GSS Inquire mech for SASLname call 15 11 1 gss inquire mech for saslname 17 11 1 gss inquire mech for saslname 17 12 Security Layers 17 12 Security Layers 17 13 Interoperability with the SASL GSSAPI mechanism 17 13 Interoperability with the SASL GSSAPI mechanism 17 13 1 The interoperability problem 17 13 1 The interoperability problem 17 skipping to change at page 8 line 26 skipping to change at page 8 line 26 o The RFC2743 section 3 1 initial context token header MUST be o The RFC2743 section 3 1 initial context token header MUST be removed if present If the header is not present the client MUST removed if present If the header is not present the client MUST send a gs2 nonstd flag flag see below On the server side send a gs2 nonstd flag flag see below On the server side this header MUST be recomputed and restored prior to passing the this header MUST be recomputed and restored prior to passing the token to GSS Accept sec context except when the gs2 nonstd flag token to GSS Accept sec context except when the gs2 nonstd flag is sent is sent o A GS2 header MUST be prefixed to the resulting initial context o A GS2 header MUST be prefixed to the resulting initial context token This header has the form gs2 header given below in ABNF token This header has the form gs2 header given below in ABNF RFC5234 RFC5234 The figure below describes the permissible attributes their use and the format of their values All attribute names are single US ASCII letters and are case sensitive UTF8 1 safe x01 2B x2D 3C x3E 7F UTF8 1 safe x01 2B x2D 3C x3E 7F As UTF8 1 in RFC 3629 except As UTF8 1 in RFC 3629 except NUL and NUL and UTF8 2 as defined in RFC 3629 STD 63 UTF8 2 as defined in RFC 3629 STD 63 UTF8 3 as defined in RFC 3629 STD 63 UTF8 3 as defined in RFC 3629 STD 63 UTF8 4 as defined in RFC 3629 STD 63 UTF8 4 as defined in RFC 3629 STD 63 UTF8 char safe UTF8 1 safe UTF8 2 UTF8 3 UTF8 4 UTF8 char safe UTF8 1 safe UTF8 2 UTF8 3 UTF8 4 saslname 1 UTF8 char safe 2C 3D saslname 1 UTF8 char safe 2C 3D gs2 authzid a saslname gs2 authzid a saslname GS2 has to transport an authzid since GS2 has to transport an authzid since the GSS API has no equivalent the GSS API has no equivalent gs2 nonstd flag F gs2 nonstd flag F F means the mechanism is not a F means the mechanism is not a standard GSS API mechanism in that the standard GSS API mechanism in that the

    Original URL path: http://www.josefsson.org/sasl-gs2/draft-ietf-sasl-gs2-18-from-7.diff.html (2016-04-30)
    Open archived version from archive

  • Diff: draft-ietf-sasl-gs2-16.txt - draft-ietf-sasl-gs2-17.txt
    in the implementation and the implementation need not concern itself with that the mechanism is part of a mechanism family concern itself with that the mechanism is part of a mechanism family 3 3 Examples 3 3 Examples skipping to change at page 14 line 32 skipping to change at page 14 line 32 Return major status codes Return major status codes o GSS S COMPLETE indicates successful completion and that o GSS S COMPLETE indicates successful completion and that output parameters holds correct information output parameters holds correct information o GSS S BAD MECH indicates that a desired mech was unsupported o GSS S BAD MECH indicates that a desired mech was unsupported by the GSS API implementation by the GSS API implementation The GSS Inquire SASLname for mech call is used to get the SASL The GSS Inquire SASLname for mech call is used to get the SASL mechanism name for a GSS API mechanism It also returns a name mechanism name for a GSS API mechanism It also returns a name and description of the mechanism in a human readable form and description of the mechanism in user friendly form The output variable sasl mech name will hold the IANA registered The output variable sasl mech name will hold the IANA registered mechanism name for the GSS API mechanism or if none is mechanism name for the GSS API mechanism or if none is registered a mechanism name computed from the OID as described registered a mechanism name computed from the OID as described in section 3 1 of this document in section 3 1 of this document 10 1 gss inquire saslname for mech 10 1 gss inquire saslname for mech The C binding for the GSS Inquire SASLname for mech call is as The C binding for the GSS Inquire SASLname for mech call is as follows follows skipping to change at page 15 line 22 skipping to change at page 15 line 22 const gss OID desired mech const gss OID desired mech gss buffer t sasl mech name gss buffer t sasl mech name gss buffer t mech name gss buffer t mech name gss buffer t mech description gss buffer t mech description Purpose Purpose Output the SASL mechanism name of a GSS API mechanism Output the SASL mechanism name of a GSS API mechanism It also returns a name and description of the mechanism in a It also returns a name and description of the mechanism in a human readable form user friendly form Parameters Parameters minor status Integer modify minor status Integer modify Mechanism specific status code Mechanism specific status code Function value GSS status code Function value GSS status code GSS S COMPLETE Successful completion GSS S COMPLETE Successful completion skipping to change at page 19 line 21 skipping to change at page 19 line 21 be used as a GS2 mechanism To make this easier for SASL be used as a GS2 mechanism To make this easier for

    Original URL path: http://www.josefsson.org/sasl-gs2/draft-ietf-sasl-gs2-17-from-6.diff.html (2016-04-30)
    Open archived version from archive

  • Diff: draft-ietf-sasl-gs2-15.txt - draft-ietf-sasl-gs2-16.txt
    be set to the gs2 header concatenated The application data field MUST be set to the gs2 header concatenated with when a gs2 cb flag of p is used the application s channel with when a gs2 cb flag of p is used the application s channel binding data binding data 5 2 Default Channel Binding 5 2 Default Channel Binding A default channel binding type agreement process for all SASL A default channel binding type agreement process for all SASL application protocols that do not provide their own channel binding application protocols that do not provide their own channel binding type agreement is provided as follows type agreement is provided as follows Clients and servers MUST implement the tls unique tls unique tls unique is the default channel binding type for any application I D altman tls channel bindings channel binding type Clients and that doesn t specify one servers SHOULD choose the highest layer innermost end to end TLS channel as the channel to bind to Clients SHOULD choose the tls unique channel binding type Servers MUST implement the tls unique tls unique Conversely clients MAY choose a different channel binding type based I D altman tls channel bindings channel binding type if they on user input configuration or a future as yet undefined channel implement any channel binding Clients SHOULD implement the tls binding type negotiation protocol Servers MUST choose the channel unique channel binding type if they implement any channel binding binding type indicated by the client if they support it Clients and servers SHOULD choose the highest layer innermost end to end TLS channel as the channel to bind to Servers MUST choose the channel binding type indicated by the client or fail authentication if they don t support it 6 Examples 6 Examples Example 1 a one round trip GSS API context token exchange no Example 1 a one round trip GSS API context token exchange no channel binding optional authzid given channel binding optional authzid given C Request authentication exchange C Request authentication exchange S Empty Challenge S Empty Challenge C n a someuser initial context token with standard C n a someuser initial context token with standard header removed header removed skipping to change at page 19 line 17 skipping to change at page 19 line 17 14 3 Resolving the problems 14 3 Resolving the problems GSS API mechanisms that negotiate other mechanisms MUST NOT be used GSS API mechanisms that negotiate other mechanisms MUST NOT be used with the GS2 SASL mechanism Specifically SPNEGO RFC4178 MUST NOT with the GS2 SASL mechanism Specifically SPNEGO RFC4178 MUST NOT be used as a GS2 mechanism To make this easier for SASL be used as a GS2 mechanism To make this easier for SASL implementations we assign a symbolic SASL mechanism name to the implementations we assign a symbolic SASL mechanism name to the SPNEGO GSS API mechanism SPNEGO SASL client implementations MUST SPNEGO GSS API mechanism SPNEGO SASL client implementations MUST NOT

    Original URL path: http://www.josefsson.org/sasl-gs2/draft-ietf-sasl-gs2-16-from-5.diff.html (2016-04-30)
    Open archived version from archive



  •