📅  最后修改于: 2023-12-03 14:47:12.803000             🧑  作者: Mango
在使用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响应。