我正在开发一个在系统中实现基于令牌的身份验证的项目。我在考虑使用SAML或OAuth。
我想知道是否可以在令牌内表示实际策略(基于系统的ACL)。在当前的设计中,我考虑给用户一个包含所有资源和允许角色的令牌。该服务根据用户的请求检查该令牌以查看用户是否具有所涉及资源的所需权限。
是否可以使用SAML / OAuth令牌代表?如果两者都有可能,那么应该使用哪一个。从我看到的大多数示例中,SAML用于SSO解决方案,OAuth用于定义实际授权策略。但是,从演示/示例中不清楚是否可以使用OAuth对特定资源进行限制性访问。
e.g。当Facebook应用想要使用OAuth访问您的照片时,是否可以限制仅访问特定相册?或者它更像是全有或全无的方法。我有什么资源可以阅读以获取更多信息吗?
答案 0 :(得分:1)
大多数体系结构(对于SAML和OAuth)都使用包含依赖方(或接收API)然后解释并应用其自己的策略(ACL)的属性的标记。
对于OAuth,范围用于指定访问令牌所代表的权限。范围可以根据您的喜好进行细化(以涵盖单个相册限制等情况)。这些可能已由用户在某些OAuth流程中授权。令牌本身未在OAuth 2.0规范中定义 - 但您可以使格式自包含(可能由令牌颁发者进行数字签名),因此范围保留在其中。某些模型使用不透明令牌,需要通过回调(可能是反向通道)验证发行者,然后将作用域返回给依赖方。
在SAML中,出于类似目的,可以在断言中存在属性语句。依赖方解释各个属性以确定用户被授权做什么。属性语句可以作为SSO的一部分来实现,也可以稍后通过AttributeQuery获取(在身份验证之后)。