Authentication 关于SAML,OAuth的问题

Authentication 关于SAML,OAuth的问题,authentication,oauth,authorization,saml,Authentication,Oauth,Authorization,Saml,我正在做一个项目,在一个系统中实现基于令牌的身份验证。我正在考虑使用SAML或OAuth 我想知道是否可以在令牌中表示实际的策略(系统基于ACL)。在当前的设计中,我考虑给用户一个包含所有资源和允许角色的令牌。根据用户的请求,服务将检查此令牌,以查看用户是否对所涉及的资源具有所需的权限 是否可以使用SAML/OAuth令牌表示?如果两者都有可能,这里应该使用哪一种。从我看到的大多数示例中,SAML用于SSO解决方案,OAuth用于定义实际的授权策略。但是,从演示/示例中不清楚是否可以使用OAut

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

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

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

e、 g.当Facebook应用程序希望使用OAuth访问您的照片时,是否可以仅限制对特定相册的访问?还是更像是全有或全无的方法。是否有我可以阅读的资源来获取更多信息?

大多数体系结构(对于SAML和OAuth)都使用令牌,这些令牌包含依赖方(或接收API)随后解释并应用其自身策略(ACL)的属性

对于OAuth,作用域用于指定访问令牌表示的权限。范围可以是您喜欢的细粒度(以涵盖诸如单个相册限制之类的情况)。这些可能已由用户在某些OAuth流中授权。OAuth 2.0规范中没有定义令牌本身,但是您可以使格式自包含(可能由令牌颁发者进行数字签名),以便将作用域保存在其中。一些模型使用不透明的令牌,需要通过回调(可能是反向通道)向颁发者进行验证,然后将作用域返回给依赖方

在SAML中,属性语句可以出于类似目的出现在断言中。依赖方解释各个属性以确定用户有权做什么。Attribute语句可能是SSO的一部分,也可能在稍后的某个点(身份验证后)通过AttributeQuery获得。

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

对于OAuth,作用域用于指定访问令牌表示的权限。范围可以是您喜欢的细粒度(以涵盖诸如单个相册限制之类的情况)。这些可能已由用户在某些OAuth流中授权。OAuth 2.0规范中没有定义令牌本身,但是您可以使格式自包含(可能由令牌颁发者进行数字签名),以便将作用域保存在其中。一些模型使用不透明的令牌,需要通过回调(可能是反向通道)向颁发者进行验证,然后将作用域返回给依赖方


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

感谢您的回复!就上述项目而言,我认为将有1000多个资源。所以从我对角色的理解来看,我需要定义数千个角色?如果允许一个用户访问多个资源,则必须设计一个新角色。但是对于SAML来说,这可以通过使用一些XML语句形式的AttributeQuery来实现,而且会更加简洁,在很多方面都差不多。如果您真的需要控制细粒度访问,那么最终可能会有一个角色/范围到资源的1:1映射。您可能还需要考虑SAML AudiZDebug查询,这可能会减轻您定义角色(至少在身份提供者和依赖方之间会知道)。相反,RP只是简单地询问IdP用户是否可以访问某个东西(比如给定的URL)。我计划使用这些XML语句来定义相关用户可以使用的资源以及允许的权限。有了这个实现,就不需要定义任何角色。这些组仍然需要定义,但这只是已经存在的ACL的自然扩展。这就是为什么我认为这将是一个比OAuth更简单、更干净的实现。如果我的理解不正确,请纠正我。再次感谢!听起来不错。我只是建议使用“角色”,因为它们通常用于抽象出您需要在各方之间共享的资源/权限定义(可能与您对“组”所做的相同)。使您能够灵活地更改一侧,而不必影响另一侧。您也可以用OAuth中的“scopes”以大致相同的方式实现这一点。至少使用OAuth,您肯定可以摆脱处理XML的复杂性,这是一个巨大的优势。感谢您的回复!就上述项目而言,我认为将有1000多个资源。所以从我对角色的理解来看,我需要定义数千个角色?如果允许一个用户访问多个资源,则必须设计一个新角色。但是对于SAML来说,这可以通过使用一些XML语句形式的AttributeQuery来实现,而且会更加简洁,在很多方面都差不多。如果您真的需要控制细粒度访问,那么最终可能会有一个角色/范围到资源的1:1映射。你也可以考虑SAML AuthzDecisionQuery