我对OAuth2.0的理解是,它定义了一个授权协议,其中服务器AUTHORIZATION_SERVER管理授权第三方客户端应用程序CLIENT以代表服务器RESOURCE_SERVER访问资源所需的工作流程用户,RESOURCE_OWNER。通过编排的当没有第三方应用程序时,可以使用OAuth2.0吗?
OAuth 2.0已授权协议使得第三方应用 以获得对HTTP服务的有限访问,无论是代表一个 资源所有者的:
这是从OAuth规范https://tools.ietf.org/html/draft-ietf-oauth-v2-17采取 资源所有者和HTTP服务之间的批准交互,或者允许第三方应用程序以自己的名义获得访问权限。
授权流程本身很清晰,并且有很多关于如何实现OAuth的例子(例如某些应用程序获得对Facebook用户帐户的部分访问)。
现在,我正在努力实施一些应用程序在那里我有一比的OAuth指定的(不涉及任何第三方应用程序),简单的流程授权服务器:
用户试图访问一个APP。
APP认证用户(超出此问题的范围)。
APP授权用户使用AUTHORIZATION_SERVER。
经过一番搜索,我发现几个应用程序似乎使用OAuth的非常相似的用例。
因此,这里有我有问题:
- 是上面的例子中的有效使用情况的OAuth?
注意,在该示例中,APP扮演两种OAuth角色:CLIENT和RESOURCE_SERVER。在OAuth中,CLIENT不应直接访问资源。相反,它是RESOURCE_SERVER,它在AUTHORIZATION_SERVER成功授予用户行为RESOURCE_OWNDER后,为CLIENT检索资源。
换句话说,CLIENT/RESOURCE_SERVER的这个APP双重角色是可以接受的吗?是否会引入除管理额外角色所需的额外复杂性之外的其他任何后果?
- 我尝试过的OAuth授权服务器是Keycloak。鉴于我上面提到的用例,你认为Keycloak是不错的选择吗?
您是否建议其他考生?
背景:我所有的应用程序都是基于Java的,并且我需要的授权策略应该是混合的(基于角色/权限和基于策略的)。