📄 sl3pm.idl
字号:
/** * This field indicates whether the principal was derived from * a authentication mechanism and authenticated. */ public boolean authenticated; /** * This field contains the other name types, such as * that appear in the X.509 alternate name fields. */ public PrincipalNameList alternate_names; /** @deprecated */ factory create( in PrincipalName the_name, in ScopedPrivilegesList with_privileges, in PrincipalNameList alternate_names ); }; /** * A ProxyPrincipal represents a principal that speaks for another. * The principal is proved that it is authorized to speak for another. * The system believes this, either by trust rules of its own, * or by delivered endorsement from the principal such as * Principal (B for A) where the endorsement takes the form * in the Principal Calculus as (T says B serves A) * where T is some entity trusted by the security service * to make those statements. * <p> * Important: This valuetype extends the Principal value type. The * "the_name" filed of this object will contain the name of the * speaks_for principal, as that is the name most access control * systems would care about. Therefore, this value type can be * truncated by access control systems that do not want to * examine the principal in detail. */ valuetype ProxyPrincipal : truncatable Principal { /** * In a Proxy Principal of (A for B) the speaking field represents * the principal A. */ public Principal speaking; /** * In a Proxy Principal of (A for B) the speaks_for field represents * the principal B. */ public Principal speaks_for; /** @deprecated */ factory create( in Principal speaking, in Principal speaks_for ); }; /** * A QuotingPrincipal represents a principal that speaks for another. * The principal is not proved that it is authorized to speak for another. * The system derives principals like this based on statements in the * calculus, such as "(A says B says r), which results in the * quoting principal ((A|B) says r), where "r" is a statement,like * a CORBA request. The security service derives principals like * this from the CSI Identity Assertion mechanism. * <p> * Important: This valuetype extends the Principal value type. The * "the_name" filed of this object will contain the name of the * speaks_for principal, as that is the name most access control * systems would care about. Therefore, this value type can be * truncated by access control systems that do not want to * examine the principal in detail. */ valuetype QuotingPrincipal : truncatable Principal { /** * In a Proxy Principal of (A|B) the speaking field represents * the principal A. */ public Principal speaking; /** * In a Proxy Principal of (A|B) the quotes_for field represents * the principal B. */ public Principal quotes_for; factory create( in Principal speaking, in Principal quotes_for ); }; // // Statements // /** * A Statement is a value type that has extensions which * represent the different relevant data directed by its StatementType. * There are two basic Statement Types, an IdentityStatement and * an EndorsementStatement. An identity statement is a statement that * asserts an identity. It may represent a the components of * an X.509 certificate during an authentication. An EndorsementStatement * may represent the contents of an X.509 AttributeCertificate or * some other notion of an endorsement, such as a certificate in * BizTalk XML. * <p> * Statements are contained in the Credentials Objects. They * represent pieces of evidence collected from which the security * service deduces the Principal of the Credentials Objects. */ typedef unsigned long StatementType; /** * The Identity Statement Type. * <p> * A statement of this type at least extends to the * IdentityStatement valuetype, if not truncated * @see IdentityStatement */ const StatementType ST_IdentityStatement = 1; //valuetype IdentityStatement /** * The Endorsement Statement Type. * <p> * A statement of this type at least extends to the * EndorsementStatement valuetype, if not truncated * @see EndorsementStatement */ const StatementType ST_EndorsementStatement = 2; //valuetype EndorsementStatement /** * An encoding is a sequence of bytes. */ typedef sequence<octet> Encoding; /** * Statement encoding type. * <p> * Statements carry their original encoding information, if * they came from an encoding, such as list of X.509 identity * certificates (i.e. a chain). The encoding type may be derivable * from the encoding itself. For example, it's easy to tell the * difference between a PEM encoded certificate, and a DER encoded * certificate. Therefore, the encoding type may default to "Unknown". * Other types may exist than the ones provided as constants in * this module. */ typedef string EncodingType; /** * The ET_NoEncoding type signifies that the statement * has been generated solely by the security service * and has no encoding. */ const EncodingType ET_NoEncoding = "NoEncoding"; /** * The ET_Unknown encoding type may always be used if the encoding * type can only be figured out from encoding itself. */ const EncodingType ET_Unknown = "Unknown"; /** * User Exception for a bad encoding. */ exception BadEncoding {}; /** * User Exception for a bad or unsupported encoding type. */ exception BadEncodingType {}; /** * The Statement Layer is the layer of the protocol or security * service from which the statement emanated, derived, or was collected. */ typedef unsigned long StatementLayer; /** * Default type for a Statement Layer */ const StatementLayer SL_Unknown = 0; /** * The SL_Transport statement type signifies that the associated * statement is derived from the transport layer, such as * an X.509 Certificate from a TLS handshake. */ const StatementLayer SL_Transport = 1; /** * The SL_CSIAuthorization statement type signifies that the associated * statement is derived from the CSI Authorization Layer in the CSIv2 * protocol. */ const StatementLayer SL_CSIAuthorization = 2; /** * The SL_CSIClientAuth statement type signifies that the associated * statement is derived from the CSI Client Authentication Layer * in the CSIv2 protocol. */ const StatementLayer SL_CSIClientAuth = 3; /** * The SL_CSIIdentity statement type signifies that the associated * statement is derived from the CSI Identity Assertion Layer * in the CSIv2 protocol. */ const StatementLayer SL_CSIIdentity = 4; /** * The SL_UserDefined statement layer signifies that the associate * statement is derived or created by a user or some other * entity than the security service. */ const StatementLayer SL_UserDefined = 5; /** * The Statement base type contains the information common * to all statements. A statement has an "external" encoding, such * as an X509 Certificate. Some statements may not have an encoding, * but its extension may carry the pertinent marshable information, * such as a PrincipalIdentityStatement for anonymous, which is * generated by the security service. */ valuetype Statement { /** * This field contains an identifier of the * service layer that generated the statement. * The layer that generated or delivered * the statement, i.e. transport, CSIv2 Authentication, * CSIv2 Authorization, or CSIv2 Identity Assertion. */ public StatementLayer the_layer; /** * The type of statement, which indicates its extension * such as an Identity Statement or an Endorsement * Statement. */ public StatementType the_type; /** * This field indicates the type of encoding. * The encoding may be contrived, at the encoding * may not exist, however, the extension of the * statement type may contain data that can * be marshaled across the wire. See the Principal * Identity Statement. */ private EncodingType encoding_type; /** * The bytes of the encoding, if it exists. */ private Encoding the_encoding; /** * Returns the encoding type */ EncodingType get_encoding_type(); /** * Returns an encoding of this statement. Some implementations * may be able to convert. Using and encoding_type of * ET_Unknown, will always yield the default encoding, * if it exists. If the encoding does not exist, * a successful return containing an empty * sequence will result. */ Encoding get_encoding( in EncodingType encoding_type ) raises ( BadEncodingType ); /** * This factory method allows users to create their * own Statements from an encoding. The statements created * by this factory method may have a type which is a further * extension of the valuetype Statement. */ factory create( in EncodingType encoding_type, in Encoding the_encoding ); }; typedef sequence<Statement> StatementList; /** * The Identity Statement further classifies the encoding * as a statement that if verified asserts an identity. */ valuetype IdentityStatement : Statement { /** * This field contains a possibly well known identifier that * may aid in the interpretation of the identity statement's * encoding. It may be an empty string, which signifies that * there is no known interpretation aid for the encoding, or * that there is no encoding. */ public string interpretation_aid; }; /** * The Principal Identity Statement is the minimal version of an * Identity statement that asserts a single identity that the * security service can translate into a principal. * <p> * An example of an identity statement is an X.509 certificate in * which its attributes are exposed into the principal, such as * privileges. This valuetype may also be further extended by the * security service depending on its encoding and the capabilities * of the security service. */ valuetype PrincipalIdentityStatement : IdentityStatement { public Principal the_principal; }; /** * The Endorsement Statement is a statement that is used for * authorization. An Endorsement statement endorses a * principal with certain characteristics, such as privileges * or the authority to act on behalf of another principal, sometimes * called "delegation". * <p> * According to our research, an endorsement statement may be a * complex entity containing matching rules for the endorsement. * An endorsement may have the following general form: * <pre> * I says Principal A matching [(P1 with [p1,...,pn]) or ....] * speaks_for * Principal B matching [(T1 with [t1,...,tn]) or ... ] * has [s1,...,sm] * on Resources matching [R1, .... Rn] * </pre> * Actual semantic reduction of principals is directed by the * the matching rules, and may depend on other statements as well, * such as local trust rules in the security service configuration. * Also, much of the capability of an endorsement statement is * dependent on its encoding. * <p> * This approach to authorization is a largely unexplored research * topic. There are not many or well known encodings of endorsement * statements. Therefore, we are reluctant to produce interfaces * just yet, that go beyond the encoding. However, we do expose the * Endorsement statement type, which may further direct the interpretation * of it's encoding. */ valuetype EndorsementStatement : Statement { /** * This field contains a possibly well known identifier that * may aid in the interpretation of the identity statement's * encoding. It may be an empty string, which signifies that * there is no known interpretation aid for the encoding, or * that there is no encoding. */ public string interpretation_aid; }; /** * An X509IdentityStatement is one that extends the Principal Identity * Statement. If one does get an X509 IdentityStatement, it is * currently supported with IAIK in both DER and PEM formats. */ valuetype X509IdentityStatement : PrincipalIdentityStatement { /** * This factory method allows users to create their * own X509Identity statements from an encoding. */ factory create( in EncodingType encoding_type, in Encoding the_encoding ); }; typedef sequence<X509IdentityStatement> X509IdentityStatementList; }; // SL3PM#endif // _SL3PM_IDL_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -