user沒有登陸過sp,此時sp向idp發送請求,下文是請求的xml形式
<samlp:AuthnRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" AssertionConsumerServiceURL="http://localhost:8080/sp/consumer" Destination="http://localhost:8080/idp/sso" ID="fd57f81a-d58f-433e-8f6f-0874fc0f939e" IssueInstant="2020-04-18T03:19:42.430Z" ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Version="2.0"> <saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">http://localhost:8080/sp</saml:Issuer> <samlp:NameIDPolicy AllowCreate="true" Format="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified"/> </samlp:AuthnRequest>
該請求根節點是 <samlp:AuthnRequest> 來表明是一個認證請求,有如下幾個參數:
1、 AssertionConsumerServiceURL 斷言sp地址,即當 IDP 認證成功后響應返回的地址
2、 Destination 目標地址,即 IDP 接收請求的地址
3、 ID 該請求的唯一標識
4、 IssueInstant 請求的時間
5、 ProtocolBinding SP 聲明此次通信的綁定方式,不同的綁定方式意味着不同的通信流程,SAML2.0 主要包括:HTTP-Artifact,HTTP-POST,HTTP-Redirect,SOAP 等幾種綁定方式。
6、 Version 版本號
7、 saml:Issuer SP 的 Id 標識
8、 samlp:NameIDPolicy IDP 對於用戶身份的標識;NameID policy 是 SP 關於 NameID 是如何被創建的說明;Format 指明 SP 需要返回什么類型的標識(SAML Artifact);屬性AllowCreate指明 IDP 是否被允許當發現用戶不存在時創建用戶賬號。