在OneLogin OIDC身份验证代码流程的第一部分和第二部分之间进行什么重定向?

时间:2019-01-17 04:27:45

标签: openid openid-connect oidc onelogin

我很好奇OneLogin OIDC登录流程的幕后发生了什么。他们的支持文章提到了流程的两个部分:

GET Auth Code Flow pt. 1-在这里,您可以将浏览器重定向到openid-connect.onelogin.com/oidc/auth端点,以获得一次性代码,可以将其替换为长期凭证。

POST Auth Code Flow pt. 2 –这是将用户重定向回第一部分中指定的注册服务器回调的地方,您应该从服务器POST来完成获取凭据的操作。

但是,在这两个步骤之间,由于OneLogin在指定的回调之前提供了302个位置,因此我的浏览器又停了几下。最终流程如下:

  1. 打我服务器的/login端点
  2. 我的服务器发出302重定向到https://mysubdomain.onelogin.com/oidc/auth?response_type=code&client_id=${client}&redirect_uri=${server}%2Foauth%2Fcallback
  3. OneLogin发出302重定向到https://mysubdomain.onelogin.com/trust/openid-connect/v2?client_id=${client}&grant=${some uuid}
  4. OneLogin发出302重定向到https://openid-connect.onelogin.com/oidc/auth/${uuid from step 3}/login?ctw=${a jwt}
  5. OneLogin发出302重定向到https://mysubdomain.onelogin.com/oidc/auth/${same uuid from step 3}
  6. OneLogin(最终)使用我要求的${server}/oauth/callback访问代码和附加的?code=查询参数发出302重定向到state
  7. 我的服务器将302发出到用户想要去的地方。

OneLogin网址上的mysubdomain是怎么回事? OneLogin's docs暗示几乎每个请求的目标URL的格式都应为https://<region>.onelogin.com/oidc/auth?client_id=<client id>&redirect_uri=<redirect uri>&response_type=code&scope=openid,其中 <region>解释为

  

区域必需字符串

     

设置为OneLogin实例的区域。

     
      
  • openid-connect
  •   
  • openid-connect-eu
  •   
     

例如如果您的OneLogin实例位于欧洲,则使用https://openid-connect-eu.onelogin.com/oidc

如果我将服务器配置为将第一个呼叫(上面的#2)定向到openid-connect.onelogin.com,则步骤3中的重定向将转到mysubdomain.onelogin.com,然后再将4.重定向到openid-connect.onelogin.com 。无论哪种方式都很方便!但是我想知道发生了什么,因为我没有在OneLogin的文档的OIDC部分中找到任何提到的子域标识符。

/trust/openid-connect//oidc/auth/${uuid}端点上的文档在哪里? (我上面链接到/oidc/auth端点的文档没有提到uuid路径参数。)这些只是开发人员和最终用户不应该意识到的实现细节吗?

第3步中显示并在重定向链中保留的uuid是什么?这不是clientId,据我所知,也没有什么可以使它返回到步骤6中的最终回调。

0 个答案:

没有答案