【问题标题】:authorize web-based API requests授权基于 Web 的 API 请求
【发布时间】:2015-05-27 17:09:38
【问题描述】:

我有以下方法:OAuth、SAML、OpenID Connect、XACML、Shibboleth。

他们是否致力于向客户端授权 Web API?在实践中,哪一个是最好的?

它们都支持 JSON 吗?

【问题讨论】:

    标签: oauth-2.0 openid-connect xacml xacml3


    【解决方案1】:

    这些是具有不同目的的不同标准。

    • OAuth 是关于授权的委托,例如我授予 Twitter 在我的 Facebook 帐户上发帖的权利。除了 OAuth 之外,请查看 UMA(用户管理的访问权限)。
    • OpenID Connect (OIDC) 是 OAuth 2.0(一个授权框架)之上的一个身份验证层。它将 OAuth 和 OpenID 结合在一起。
    • XACML 是一种基于属性和策略的访问控制/授权标准。它是关于定义管理对资源的访问的访问控制策略。
    • Shibboleth 是/曾经是基于 SAML 的联合协议。
    • SAML 是跨多个企业的身份联合的事实标准。

    OAuth、OpenID Connect、SAML 和 Shibboleth 专注于用户身份、身份验证和联合。

    XACML 专门用于访问控制/授权,可与任何其他标准结合使用。

    这些标准是否支持 JSON 是一个模糊的问题。做什么的? SAML,AFAIK,通常是 XML 编码的,但标准本身与它的编码无关。 XACML 通常使用 XML 作为其策略,但访问控制流可以表示为 JSON。在 OpenID 中可以使用 JWT,即 JSON Web Token。

    JSON Web Token (JWT) 是一种表示要在两方之间转移的声明的方法。 JWT 中的声明被编码为 JSON 对象,该对象使用 JSON Web Signature (JWS) 进行数字签名和/或使用 JSON Web Encryption (JWE) 进行加密

    您可以查看 2 个网站以了解更多信息:

    【讨论】:

    • 感谢大卫的精彩评论,非常有帮助。