2017-05-08 18 views
0

我对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指定的(不涉及任何第三方应用程序),简单的流程授权服务器:

  1. 用户试图访问一个APP。

  2. APP认证用户(超出此问题的范围)。

  3. APP授权用户使用AUTHORIZATION_SERVER。

经过一番搜索,我发现几个应用程序似乎使用OAuth的非常相似的用例。

因此,这里有我有问题:

  1. 是上面的例子中的有效使用情况的OAuth?

注意,在该示例中,APP扮演两种OAuth角色:CLIENT和RESOURCE_SERVER。在OAuth中,CLIENT不应直接访问资源。相反,它是RESOURCE_SERVER,它在AUTHORIZATION_SERVER成功授予用户行为RESOURCE_OWNDER后,为CLIENT检索资源。

换句话说,CLIENT/RESOURCE_SERVER的这个APP双重角色是可以接受的吗?是否会引入除管理额外角色所需的额外复杂性之外的其他任何后果?

  1. 我尝试过的OAuth授权服务器是Keycloak。鉴于我上面提到的用例,你认为Keycloak是不错的选择吗?

您是否建议其他考生?

背景:我所有的应用程序都是基于Java的,并且我需要的授权策略应该是混合的(基于角色/权限和基于策略的)。

回答

0

对于我所了解的Oauth2:您有第三方应用程序要求用户允许她以他的名义向应用程序请求数据。第三方应用这里可能是一个网页,一个移动应用程序等

  1. 的OAuth2是OAuth的一样,但使用而不是其他的加密方案,SSL安全protocole,请参阅本response:所以是的,如果你使您的应用程序可以使用OAuth,然后它可以使用OAuth2。

  2. 没有实现的OAuth2 protocole自己,但使用现有的lib代替:从您的应用程序更容易separatly更换/升级:更可靠,更新等

  3. 启动一个单独的服务器上此的OAuth2代码代码

编辑:我给你response还配备了一些不错的示意图,以帮助您了解:)

EDIT2:在其他理由使用单独的服务器非统组织th2和你的应用程序是如此,如果有一天你有多个数据源(多个API),但突然你不需要第一个,那个放置OAuth代码的地方,你会怎么做?如果将它放在单独的服务器上,则您的OAuth2路由将更好,更可靠。

1

看起来您最好查询(本地)LDAP服务器或数据库以获取所需授权信息的类型。 OAuth专门用于避免应用程序对用户进行身份验证。

相关问题