📜  saml 响应的类型 (1)

📅  最后修改于: 2023-12-03 14:47:12.803000             🧑  作者: Mango

SAML响应类型

在使用SAML(Security Assertion Markup Language)协议时,通常会涉及到SAML响应,即对于SAML请求的响应。SAML响应一般包含了身份认证和授权信息,被用于在不同的应用程序之间进行身份认证和授权。

在SAML协议中,SAML响应类型(Response Types)被用来指定SAML响应的内容类型。常见的SAML响应类型包括:

  • Assertion:包含身份认证和授权信息的SAML断言(Assertion)
  • Empty:空的SAML响应,用于表示错误或者没有响应的情况
  • Artifact:包含指向SAML断言的Artifact(SAML消息较大时使用)
  • LogoutResponse:用于响应SAML登出请求的SAML响应

通常情况下,SAML响应类型与SAML请求类型(Request Types)是相对应的,例如,SAML AuthnRequest会对应SAML Response中的Assertion类型,SAML LogoutRequest会对应LogoutResponse类型。

以下是一个SAML Response的示例代码片段,其中SAML响应类型为Assertion:

<samlp:Response xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
                xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
                ID="_aab41785-1332-4236-bc3c-7aefad7e8e58"
                Version="2.0"
                IssueInstant="2022-07-19T09:37:44Z"
                Destination="https://example.com/saml/acs"
                InResponseTo="_3025c51c-78be-4485-a1d0-31f1cbbe7762">
   <saml:Issuer>https://idp.example.com/metadata</saml:Issuer>
   <samlp:Status>
      <samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success"/>
   </samlp:Status>
   <saml:Assertion ID="_4937ed98-08d6-4e85-9b79-679016ffd9e6"
                   Version="2.0"
                   IssueInstant="2022-07-19T09:37:44Z">
      <saml:Issuer>https://idp.example.com/metadata</saml:Issuer>
      <saml:Subject>
         <saml:NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent">user@example.com</saml:NameID>
         <saml:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
            <saml:SubjectConfirmationData InResponseTo="_3025c51c-78be-4485-a1d0-31f1cbbe7762"
                                          Recipient="https://example.com/saml/acs"
                                          NotOnOrAfter="2022-07-19T09:47:44Z"/>
         </saml:SubjectConfirmation>
      </saml:Subject>
      <saml:Conditions NotBefore="2022-07-19T09:32:44Z"
                       NotOnOrAfter="2022-07-19T12:37:44Z">
         <saml:AudienceRestriction>
            <saml:Audience>https://example.com/saml/metadata</saml:Audience>
         </saml:AudienceRestriction>
      </saml:Conditions>
      <saml:AuthnStatement SessionIndex="_1f327958-2d05-4a23-b52f-6a415e0a79db"
                           AuthnInstant="2022-07-19T09:37:44Z">
         <saml:AuthnContext>
            <saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</saml:AuthnContextClassRef>
         </saml:AuthnContext>
      </saml:AuthnStatement>
   </saml:Assertion>
</samlp:Response>

在这个示例中,我们看到SAML Response的类型被指定为Assertion,即包含身份认证和授权信息的SAML断言。在SAML响应中,除了Assertion外,还包括了一些其他元素,例如Issuer、Subject、Conditions和AuthnStatement等,这些元素共同构成了完整的SAML响应。