📄 securitylevel3.idl
字号:
//tabstop=4//***********************************************************************// ORBAsec SL3 // ----------------------------------------------------------------------// Copyright (C) 2001 Adiron, LLC. // All rights reserved. // ----------------------------------------------------------------------// $Id$//***********************************************************************//// Marked modifications Copyright (C) 2002, 2003 ObjectSecurity Ltd.//#ifndef _SECURITY_LEVEL3_IDL_#define _SECURITY_LEVEL3_IDL_#include <mico/security/sl3pm.idl>#include <mico/security/sl3cm.idl>#include <mico/security/sl3aqargs.idl>//#include <mico/orb.idl>#include <mico/policy.idl>#include <mico/timebase.idl>#pragma prefix "adiron.com"/** * The Security Level 3 module contains the data definitions and * the Application Programmers Interface for dealing with the * ORBAsec SL3 Security, and the new CSIv2 Security Protocol, which has * been adopted by the OMG. * <p> * The SecurityLevel3 interfaces and its security data structures * are based on the Principal Calculus. This is a mathematical * model of representing principals for the use of access control * and auditing. * <p> * The SecurityLevel3 Security Service is represented by two objects * that are returned by the ORB's resolve_initial_reference call. * Those two objects are the SecurityManager and the SecurityCurrent. * Other objects associated with the security service emanate from * these two objects. * <p> * The SecurityLevel3 Security Service has a Credentials model. This * model, which is heavily based on the Principal Calculus, yields * an API for accessing principal information. The credentials * represent a principal's credentials, as well as the establishment * of security contexts between client and servers. * <p> * The SecurityLevel3 Security Service is currently CSIv2 Level 2 * compliant: * <ul> * <li> * It works over TLS and plain TCPIP. * <li> * It handles the GSSUP (Username/Password) mechanism for * CSI level Client Authentication. * <li> * It has the ability to "quote" an identity, i.e. CSIv2 * Identity Assertion. * <li> * It has the ability to "push" privileges, which it does * ATLAS enabled servers. * <li> * It has the ability to install your own authorization * token process that can allow for delegation. * </ul> * <p> * The Security Level 3 ORB Security Service does supports retention * of CSI state. Client Authentication information and Identity * assertion information is transmitted on each request. * <p> * The Security Level 3 ORB Security Service does not automatically * support endorsement at this time (CSIv2 Level 2 compliance), but * does give you facility to do so. */module SecurityLevel3 { /** * The Adiron VMCID, which is used in Minor Error Codes, * Policy Tags, etc. */ const unsigned long ADIRON_VMCID = 0xA11C000; //------------------------------------------------------------- // Security Level 3 Application Users Interface // //------------------------------------------------------------- // // The Security Level 3 Credentials Model // /** * The Initiator Type of the Initiator Side of the Credentials states * the kind of Initiator it is. There are three types that mirror * the type of Principal, Simple, Quoting, and Proxy, that the * initiator intends to represent to a server while trying to * establish a security context with the server. */ typedef unsigned long InitiatorType; /** * The IT_None InitiatorType is a value that is defined for * completeness, and has no real use. */ const InitiatorType IT_None = 0; /** * The IT_Simple InitiatorType is a value that states that the * initiator is a "Simple" Principal. */ const InitiatorType IT_Simple = 1; /** * The IT_Quoting InitiatorType is a value that states that the * initiator will quote another principal to the server. This * principal is denoted in the Principal Calculus as (A|B), i.e. * A quoting B. */ const InitiatorType IT_Quoting = 2; /** * The IT_Proxy InitiatorType is a value that states that the * initiator will quote another principal to the server along with * getting or providing proof to the server that it can act on * behalf of the quoted principals. This * principal is denoted in the Principal Calculus as (A for B). */ const InitiatorType IT_Proxy = 3; /** * The CredsInitiator object is an object that is directly a * member of a particular OwnCredentials object. It represents * the "initiator" side of the credentials. */ local interface CredsInitiator { /** * The principal field contains a local view of the * Principal that the Credentials intend to represent. * Note that during context establishment, the actual establish * client principal may be represented differently, especially * with respect to environmental attributes. Some environmental * attributes are a direct result of context establishment. */ readonly attribute SL3PM::Principal the_principal; /** * The supporting statements field contains a list of statements * supporting the principal associated with this initiator. */ readonly attribute SL3PM::StatementList supporting_statements; /** * The restricted_resources field contains a list of * resource names, by which the credentials initiator * believes his authorizations apply. */ readonly attribute SL3PM::ResourceNameList restricted_resources; readonly attribute SL3PM::PrinAttributeList environmental_attributes; /** * The initiator_type field signifies the intent of the * initiator as to the principal it presents for the * security context establishment. It should correspond * to the type of the Principal. However, it might be slightly * different, because using CSIv2 Client Authentication * technically creates a "QuotingPrincipal" however, the * initiator type will still be simple as no CSIv2 Identity * Assertion will be used in establishing the security * context. */ readonly attribute InitiatorType initiator_type; /** * The supports_embodiment field is true if these credentials * can be directed by use of the CredsDirective, to give the * the accepting end of a context establishment the ability * to impersonate this initiator principal. */ readonly attribute boolean supports_embodiment; /** * The supports_endorsement field is true if these credentials * can be directed by use of the CredsDirective, to endorse * the accepting end of a context establishment to act * on behalf of this initiator principal. */ readonly attribute boolean supports_endorsement; /** * The supports_quoting field is true if these credentials * can be directed by use of the CredsDirective, to simply * quote another principal on top of these credentials. */ readonly attribute boolean supports_quoting; /** * The expiry_time field denotes the time that these * credentials expire. */ readonly attribute TimeBase::UtcT expiry_time; }; /** * The CredsAcceptor object is an object that is directly a * member of a particular OwnCredentials object. It represents * the "acceptor" side of the credentials. */ local interface CredsAcceptor { /** * The principal field contains a local view of the * Principal that the Credentials intend to represent. * Note that during context establishment, the actual establish * target principal may be represented differently, especially * with respect to environmental attributes. Some environmental * attributes are a direct result of context establishment. */ readonly attribute SL3PM::Principal the_principal; /** * The supporting_statements field contains a list of statements * supporting the principal associated with this acceptor. */ readonly attribute SL3PM::StatementList supporting_statements; /** * The restricted_resources field contains a list of * resource names, by which the credentials initiator * believes his authorizations apply. */ readonly attribute SL3PM::ResourceNameList restricted_resources; readonly attribute SL3PM::PrinAttributeList environmental_attributes; /** * The accepts_endorsement field is true if these credentials * support and accept CSIv2 endorsement information. */ readonly attribute boolean accepts_endorsement; /** * The accepts_quoting field is true if these credentials * support and accept CSIv2 Identity Assertion information. */ readonly attribute boolean accepts_quoting; /** * The expiry_time field denotes the time that these * credentials expire. */ readonly attribute TimeBase::UtcT expiry_time; }; /** * This type is used to identify listeners for removal. * A Listener identity will be assigned to a listener when * it is assigned to a particular object. */ // begin of ObjectSecurity removal// typedef string ListenerId; /** * This local interface is used to notify the user when the credentials * have been relinquished. When credentials are "released" they may * stay around until their work is finished. At that point they * will be relinquished. Also, if the underlying transport credentials * are released, then the SecurityLevel3 Credentials get released * as well. This listener will get informed of this event. */// local interface RelinquishedCredentialsListener {// void relinquished_notify(// in SL3CM::CredentialsId creds_id// );// }; // end of ObjectSecurity removal /** * The Credentials base interface contains the common items for * the different types of credentials. * @see OwnCredentials * @see ClientCredentials * @see TargetCredentials */ local interface Credentials { /** * The creds_id attribute contains a system generated * identifier with which can uniquely reference the credentials * object. */ readonly attribute SL3CM::CredentialsId creds_id; /** * The creds_type stipulates the type of credentials, i.e. * to which type of credentials it may be narrowed. */ readonly attribute SL3CM::CredentialsType creds_type; /** * The creds_usage field stipulates the intended usage of the * credentials. For OwnCredentials, it will be one of * CU_AcceptOnly, CU_Initiate, CU_InitiateAndAccept. * For ClientCredentials and TargetCredentials it will be * CU_None. */ readonly attribute SL3CM::CredentialsUsage creds_usage; /** * The creds_state field contains the * validity state of the credentials. */ readonly attribute SL3CM::CredentialsState creds_state; /** * Add a listener that will get notified when the * OwnCredentials are finally done with any pending * work and are relinquished by the security service. */ // begin of ObjectSecurity removal// ListenerId add_relinquished_listener(// in RelinquishedCredentialsListener listener// ); /** * Removes a listener. This function raises a BAD_PARAM * exception if the listener is not registered. */// void remove_relinquished_listener(// in ListenerId id// ); // end of ObjectSecurity removal };
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -