当没有第三方应用程序时,是否可以使用OAuth2.0?

当没有第三方应用程序时,是否可以使用OAuth2.0?,oauth,oauth-2.0,authorization,keycloak,Oauth,Oauth 2.0,Authorization,Keycloak,我对OAuth2.0的理解是,它定义了一个授权协议,其中服务器(authorization_server)管理授权第三方客户端应用(client)以代表用户(RESOURCE_OWNER)访问服务器(RESOURCE_server)拥有的资源所需的工作流 这来自OAuth规范: OAuth 2.0授权协议支持第三方应用程序 要获得对HTTP服务的有限访问权,请代表 通过协调 资源所有者和HTTP服务,或允许第三方 代表其自身获取访问权限的应用程序 授权流程本身是明确的,关于如何实现OAuth有很

我对OAuth2.0的理解是,它定义了一个授权协议,其中服务器(authorization_server)管理授权第三方客户端应用(client)以代表用户(RESOURCE_OWNER)访问服务器(RESOURCE_server)拥有的资源所需的工作流

这来自OAuth规范:

OAuth 2.0授权协议支持第三方应用程序 要获得对HTTP服务的有限访问权,请代表 通过协调 资源所有者和HTTP服务,或允许第三方 代表其自身获取访问权限的应用程序

授权流程本身是明确的,关于如何实现OAuth有很多例子(比如一些应用程序获得了对Facebook用户帐户的部分访问权)

现在,我正在尝试为一些应用程序实现授权服务器,其中我的流程比OAuth指定的流程更简单(不涉及第三方应用程序):

  • 用户试图访问应用程序

  • 应用程序验证用户(此问题超出范围)

  • 应用根据授权服务器授权用户

  • 在做了一些搜索之后,我发现有几个应用程序似乎使用OAuth处理非常相似的用例

    以下是我的问题:

  • 上面的例子是OAuth的有效用例吗
  • 注意,在这个示例中,应用程序扮演两个OAuth角色:客户端和资源服务器。在OAuth中,客户端永远不能直接访问资源。取而代之的是,在用户(资源所有者)通过授权服务器成功地对客户端进行授权之后,由资源服务器为客户端检索资源

    换句话说,这个应用程序是否可以兼任客户端/资源服务器的双重角色?除了管理本场景中不存在的额外角色所需的额外复杂性之外,它还会带来其他后果吗

  • 我试验过的OAuth授权服务器是keydepeat。考虑到我上面提到的用例,您认为KeyClope是一个好的选择吗
  • 你推荐其他候选人吗


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

    据我所知,Oauth2:您有一个第三方应用程序,要求用户允许她以自己的名义向应用程序询问数据。此处的第三方应用程序可能是网页、移动应用程序等

  • OAuth2类似于OAuth,但是使用SSL而不是其他加密解决方案的安全协议,请参见:是的,如果您让应用程序与OAuth一起工作,那么它应该与OAuth2一起工作

  • 不要自己实现OAuth2协议,而是使用现有的库:更可靠、更新等

  • 在单独的服务器上启动此OAuth2代码:更容易从应用程序代码中单独替换/更新

  • 编辑:我给你的还提供了一些很好的图表来帮助你理解:)


    EDIT2:为OAuth2和应用程序使用单独服务器的另一个原因是,如果有一天你有多个数据源(多个API),但突然你不需要第一个,也就是放OAuth代码的那个,你会怎么做?如果您将OAuth2路由放在单独的服务器上,它会更好、更可靠。

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