我正在使用SAML令牌通过将SAML令牌放在Authorization
标头中来对一组REST-ful服务进行身份验证。
我找不到任何可以表明有一种标准方法可以做到这一点。例如,我使用:
Authorization: Bearer <EncryptedAssertion ...
或:
Authorization: Bearer PEVuY3J5cHRlZEFzc2VydGlvbiAuLi4=
或:
Authorization: SAML PEVuY3J5cHRlZEFzc2VydGlvbiAuLi4=
或其他什么?
请注意,如果证书具有多个名称组件,则第一个不起作用(因为逗号会混淆标头解析)。
我使用'Bearer'的事实并没有说明令牌的格式。
Apache CXF似乎使用第三种变体。
哪一个是标准的?有标准吗?如果没有,是否有事实上的标准?
答案 0 :(得分:6)
HTTP中自定义身份验证方案的标准在RFC 2617和7235中定义。
Authorization: scheme key="value", ...
我怀疑你的具体案例有一个标准,但我认为这是可以接受的:
Authorization: SAML bearer="PEVuY3J5cHRlZEFzc2VydGlvbiAuLi4="
答案 1 :(得分:4)
在对此主题进行了大量研究之后,我找不到任何标准来定义如何在Authorization标头中使用SAML令牌。
然而,CXF是一个非常着名的Web-Serviec堆栈supports SAML Token,方式如下:
Authorization: SAML eJydV1m....9fYTCPr=
OAuth2还定义了如何使用SAML令牌进行身份验证以接收OAuth2访问令牌,然后可以使用该令牌来调用另一个REST服务(https://tools.ietf.org/html/rfc7522)
POST /token.oauth2 HTTP/1.1
Host: as.example.com
Content-Type: application/x-www-form-urlencoded
grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Asaml2-bearer&
assertion=PHNhbWxwOl...[omitted for brevity]...ZT4