SP应该如何向IdP发出SAML 2.0 SLO请求?GET还是POST



我使用的库没有SLO文档,也没有工作示例。我希望做一个开源的贡献,并纠正这一点。目前,它所做的是为我的SP中间件提供一个URL,如下所示:

https://my_idp_domain/adfs/ls?SAMLRequest=nZaPawIwEMW%2FypK7%2BVfdStCVghQE20N...

然后我重定向到它,因此它是一个到IdP的GET请求。我相信IdP将此视为登录请求。

我可以看到SAMLRequestGET有效载荷值在解码时如下所示:

<?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格式必须与登录中的相匹配
  • 必须对注销进行签名

最新更新