Internet Engineering Task Force (IETF) L. Hornquist Astrand Request for Comments: 5896 Apple, Inc. Updates: 4120 S. Hartman Category: Standards Track Painless Security, LLC ISSN: 2070-1721 June 2010Generic Security Service Application Program Interface (GSS-API): Delegate if Approved by Policy
Hornquist Astrand & Hartman Standards Track [Page 1]
RFC 5896 GSS-API: Delegate if Approved by Policy June 2010
Copyright Notice
1. Introduction
Several GSS-API applications work in a multi-tiered architecture, where the server takes advantage of delegated user credentials to act on behalf of the user and contact additional servers. In effect, the server acts as an agent on behalf of the user. Examples include web applications that need to access e-mail or file servers, including CIFS file servers. However, delegating user credentials to a party who is not sufficiently trusted is problematic from a security standpoint.
Hornquist Astrand & Hartman Standards Track [Page 2]
RFC 5896 GSS-API: Delegate if Approved by Policy June 2010
This specification adds a new input flag to gss_init_sec_context() to request delegation when approved by central policy. In addition, a constant value to be used in the GSS-API C bindings [RFC2744] is defined. Finally, the behavior for the Kerberos mechanism [RFC4121] is specified.
2. Requirements Notation
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119].
3. GSS-API flag, C binding
The gss_init_sec_context API is extended to gain a new input flag, deleg_policy_req_flag, and a new output flag, deleg_policy_state BOOLEAN. If the deleg_policy_req_flag is set, then delegation SHOULD be performed if recommended by central policy. When delegation was recommended by the central policy and when delegation was done, the output flag deleg_policy_state will be set.
4. GSS-API Behavior
As before, if the deleg_req_flag is set, the GSS-API mechanism will attempt delegation of user credentials. When delegation is successful, deleg_state will return TRUE in both the initiator and acceptor output state (gss_init_sec_context and gss_accept_sec_context, respectively).
Hornquist Astrand & Hartman Standards Track [Page 3]
RFC 5896 GSS-API: Delegate if Approved by Policy June 2010
If the initiator sets both the deleg_req_flag and deleg_policy_req_flag, delegation will be attempted unconditionally. When delegation is successful, deleg_state will return TRUE in the initiator and acceptor. When delegation was successful, the deleg_state will return TRUE in the initiator and acceptor. Additionally, if the mechanism-specific policy recommended delegation, the deleg_policy_state will additionally return TRUE for the initiator (only).
5. Kerberos GSS-API Behavior
If the initiator sets the deleg_policy_req_flag (and not deleg_req_flag), the Kerberos GSS-API mechanism MUST only delegate if OK-AS-DELEGATE is set [RFC4120] in the service ticket. Other policy checks MAY be applied. If the initiator sets deleg_req_flag (and not deleg_policy_req_flag), the behavior will be as defined by [RFC2743]. If the initiator set both the deleg_req_flag and deleg_policy_req_flag, delegation will be attempted unconditionally.
6. Rationale
Strictly speaking, the deleg_req_flag behavior in [RFC2743] could be interpreted the same as deleg_policy_req_flag is described in this document. However, in practice, the new flag is required because existing applications and user expectations depend upon GSS-API mechanism implementations without the described behavior, i.e., they do not respect OK-AS-DELEGATE.
Hornquist Astrand & Hartman Standards Track [Page 4]
RFC 5896 GSS-API: Delegate if Approved by Policy June 2010 7. Security ConsiderationsThis document introduces a flag that allows the client to get help from the KDC in determining to which servers one should delegate credentials, and the servers to which the client can delegate.
8. Acknowledgements
Thanks to Disco Vince Giffin, Thomas Maslen, Ken Raeburn, Martin Rex, Alexey Melnikov, Jacques Vidrine, Tom Yu, Hilarie Orman, and Shawn Emery for reviewing the document and providing suggestions for improvements.
9. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Hornquist Astrand & Hartman Standards Track [Page 5]
RFC 5896 GSS-API: Delegate if Approved by Policy June 2010
[RFC2744] Wray, J., "Generic Security Service API Version 2 :