1

我正在开发一个项目以在系统中实现基于令牌的身份验证。我正在考虑使用 SAML 或 OAuth。

我想知道是否可以在令牌中表示实际的策略(基于系统的 ACL)。对于当前的设计,我正在考虑给用户一个包含所有资源和允许角色的令牌。该服务根据用户的请求检查此令牌以查看用户是否对所涉及的资源具有所需的权限。

是否可以使用 SAML/OAuth 令牌来表示?如果两者都可以,这里应该使用哪一个。从我看到的大多数示例中,SAML 用于 SSO 解决方案,而 OAuth 用于定义实际的授权策略。但是从演示/示例中不清楚是否可以使用 OAuth 对特定资源进行限制性访问。

例如,当 Facebook 应用程序想要使用 OAuth 访问您的照片时,是否可以限制仅访问特定相册?还是更像是全有或全无的方法。我可以阅读任何资源以获取更多信息吗?

4

1 回答 1

1

大多数架构(对于 SAML 和 OAuth)使用包含属性的令牌,依赖方(或接收 API)随后解释并应用其自己的策略 (ACL)。

在 OAuth 的情况下,范围用于指定访问令牌所代表的权限。范围可以随心所欲地细化(以涵盖单个相册限制等情况)。这些可能已在某些 OAuth 流程中由用户授权。令牌本身未在 OAuth 2.0 规范中定义 - 但您可以使格式自包含(可能由令牌颁发者进行数字签名),以便将范围保存在其中。一些模型使用不透明的令牌,需要通过回调(可能是反向通道)向颁发者进行验证,然后将范围返回给依赖方。

在 SAML 中,一个属性声明可以出现在一个断言中,用于类似的目的。依赖方解释各个属性以确定用户被授权做什么。属性声明可以作为 SSO 的一部分通过,也可以在稍后的某个时间点(在身份验证之后)通过 AttributeQuery 获得。

于 2012-06-15T16:19:53.823 回答