Oauth 2.0 OpenID连接第一方和第三方依赖方体系结构

Oauth 2.0 OpenID连接第一方和第三方依赖方体系结构,oauth-2.0,openid-connect,Oauth 2.0,Openid Connect,我正在为Company-X的X1和X2应用程序编写REST-API 为了让用户访问并登录到X1和X2,他们应该拥有一个有效的Company-X帐户,就像您需要google帐户使用gmail和google+一样。简言之,X1和X2本身没有身份验证,它使用Company-X身份提供程序(IP)进行身份验证和会话 在OpenID Connect(OIDC)条款中,X1和X2将是依赖方(RP)。X1是用户代理,X2是服务器。Company-X IP包含授权服务器和资源(受保护的REST-API) 我选

我正在为Company-XX1X2应用程序编写REST-API

为了让用户访问并登录到X1和X2,他们应该拥有一个有效的Company-X帐户,就像您需要google帐户使用gmail和google+一样。简言之,X1和X2本身没有身份验证,它使用Company-X身份提供程序(IP)进行身份验证和会话

在OpenID Connect(OIDC)条款中,X1和X2将是依赖方(RP)。X1是用户代理,X2是服务器。Company-X IP包含授权服务器和资源(受保护的REST-API)

  • 我选择这些补助金类型对吗?(见图表图例)

  • 对于这种情况,这是推荐的体系结构吗?(具有用于登录的集中帐户的第一方应用程序,将来将为第三方应用程序提供IP)


补助金类型的选择主要通过以下方面进行:

  • 客户端应用程序的类型
  • 客户端应用程序希望访问哪些资源
  • 第一点需要考虑的是客户端应用程序运行的环境:

    • 基于浏览器->隐式授权
    • 服务器端->授权码授予和/或客户端凭据授予
    • 本机应用程序->主要是隐式授权,但也可以考虑授权代码授权
    基于这一点以及您所描述的,选择RP X1的隐式授权似乎是合适的

    关于RP X2它不是那么明确,我们应该从这个应用程序想要访问哪些资源的角度来审查它。由于位于服务器端,此应用程序能够维护机密,因此有资格获得客户端凭据,但是,当应用程序希望访问与应用程序本身而不是特定用户关联的资源时,此授权是合适的

    如果此应用程序要访问与Company-X用户帐户关联的资源,则应使用授权代码grant

    下一个图表说明了客户端凭据授予与所有其他授予之间的实质性差异。正如您所注意到的,不涉及单独的资源所有者(理论上,资源所有者是客户机应用程序本身)


    客户端凭据

    (来源:)

    授权码授予

    (来源:)


    就架构而言从我的角度来看,这似乎是正确的方法。它使用公共标准并满足您的要求,因此我高度怀疑是否有更好的替代方案。认证系统的大问题不是设计阶段,而是实现本身,特别是考虑到使其“工作”需要大约20%的努力,剩下的80%是确保您不会搞砸