我使用的库没有SLO文档,也没有工作示例。我希望做一个开源的贡献,并纠正这一点。目前,它所做的是为我的SP中间件提供一个URL,如下所示:
https://my_idp_domain/adfs/ls?SAMLRequest=nZaPawIwEMW%2FypK7%2BVfdStCVghQE20N...
然后我重定向到它,因此它是一个到IdP的GET请求。我相信IdP将此视为登录请求。
我可以看到SAMLRequest
GET有效载荷值在解码时如下所示:
<?xml version="1.0"?>
<samlp:LogoutRequest Destination="https://my_idp_host/adfs/ls" ID="_428dc0ab36ba0bbe1a6c"
IssueInstant="2022-02-21T18:06:47.010Z" Version="2.0"
xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
<saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">foo</saml:Issuer>
<saml:NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified">my_user_id</saml:NameID>
</samlp:LogoutRequest>
我看到一些评论说,这实际上应该是一个在主体中包含<samlp:LogoutRequest>
的POST请求。
我的问题是:这应该是GET还是POST请求。如果GET,我缺少什么?如果是POST,主体是否应该是未编码的(只是纯XML(?我想要一个示例请求。
根据规范,它应该是"HTTP重定向、POST或工件绑定";。
还有,这个。
关键要素:
- 姓名ID
- 注销中的NameID格式必须与登录中的相匹配
- 必须对注销进行签名