Mat*_*aug 6 authorization oauth-2.0
我目前正在为所有客户(网络和移动)开发OAuth2实施.到目前为止,没什么好看的,但是我们希望在范围上有更多的复杂性,这样我们就可以授予对某些对象的部分访问权限,直到单个属性的粒度.
示例:客户端获取资源的访问权限,假设具有其所有公共属性的用户对象.客户端具有完全读取权限,但只允许编辑某些属性,例如密码和用户名,但不能编辑位置和/或生日.
到目前为止,我的想法是,这种粒度是在授权服务器上定义的,只是由资源服务器解释.
基于RFC,scope是一个基于字符串的逗号分隔值,所以是一个简单的列表(http://tools.ietf.org/html/rfc6749#page-23)
scope参数的值表示为以空格
分隔的区分大小写的字符串列表.字符串由
授权服务器定义.如果值包含多个以空格分隔的字符串,则它们的顺序无关紧要,并且每个字符串都会
为请求的范围添加其他访问范围.Run Code Online (Sandbox Code Playgroud)scope = scope-token *( SP scope-token ) scope-token = 1*( %x21 / %x23-5B / %x5D-7E )
因此,我提供json作为范围的第一个假设可能不起作用,所以我考虑引入可能变得复杂的命名空间,例如(范围:用户写入完整读取列表的属性或类似的东西).
有没有最好的做法,我在RFC中遗漏了什么或者我是否完全滥用OAuth?
你在这里滥用OAuth.范围用于定义基本权限,但不包括细粒度访问权限,更不用说授权策略.
您应该使用XACML.在XACML中,您还拥有授权服务器(策略决策点或pdp)的概念.它使用策略配置.它位于基础设施中.它在运行时由保护您的api/app的策略执行点进行查询.
查看developers.axiomatics.com了解详情(免责声明:我为Axiomatics工作)
小智 7
您可能需要考虑UMA协议.UMA RPT令牌由客户端呈现给资源服务器.RPT令牌由具有特定范围的授权服务器(AS)颁发.在AS上,范围映射到策略,例如谁可以使用哪些客户端,网络,所需的加密,时间等来获取API.这些策略可以用代码或更结构化的策略语法表示,如XACML,例如大卫建议如上.
如果您想了解有关UMA的更多信息,我将从这个图表开始:

在这种情况下,有两个OAuth2客户端:资源服务器(具有API的东西)和请求方(移动应用程序或网站).PAT和AAT通常是OpenID Connect客户端令牌.UMA Core规范称"OAuth2",但加密客户端注册的唯一OAuth2配置文件是OpenID Connect,因此它是隐含的.
资源所有者是制定策略的人.这些策略可以是算法的,也可能需要资源所有者的操作.有关OpenID Connect的更多信息,请参阅
有关UMA的更多信息,请参阅:
如果您正在寻找免费的开源OAuth2授权服务器,您应该看一下Gluu服务器,它是一个OpenID Connect Provider和一个用于FOSS访问管理的UMA授权服务器
| 归档时间: |
|
| 查看次数: |
2831 次 |
| 最近记录: |