【问题标题】:Okta: Failed to get authorization code through API callOkta:通过 API 调用获取授权码失败
【发布时间】:2017-04-08 05:14:26
【问题描述】:

我正在使用 Okta 的 API 将 Okta 集成到我自己的 IdP 服务器。

我正在按照以下步骤实现授权代码流:

  1. 在我自己的服务器中,使用/api/v1/authn端点获取sessionToken。

  2. 使用sessionToken通过调用此端点获取授权:/oauth2/v1/authorize?client_id=" + clientId + "&sessionToken=" + sessionToken + "&response_type=code&response_mode=query&scope=openid&redirect_uri=" + redirectUrl + "&state=evanyang&nonce="

它应该返回带有状态码 302 的响应,并且带有包含重定向 url 以及 code 值的 Location 标头。

但是,我不断收到带有状态代码 200 且没有 Location 标头的响应,并且 html 正文显示“您使用的是不受支持的浏览器”。和“您的浏览器禁用了Javascript。”

根据 API 文档:http://developer.okta.com/docs/api/resources/oidc.html#authentication-requestsessionToken 参数足以做到这一点:An Okta one-time sessionToken. This allows an API-based user login flow (rather than Okta login UI).

我是否缺少通过 API 获取授权代码的任何额外要求?请帮忙。

在此先感谢 :)

【问题讨论】:

    标签: authorization openid okta okta-api openid-connect


    【解决方案1】:

    其中的授权代码授权类型和授权端点旨在通过浏览器访问,而不是通过非浏览器客户端访问。

    【讨论】:

      【解决方案2】:

      此问题是由于在获取会话令牌和授权码之间获取会话 ID 引起的。会话令牌一旦用于获取会话 id,它就会失效,这意味着它不能再用于获取授权码。

      根据 Okta,授权代码授予类型和授权端点也可以通过基于 API 的 Web 应用程序使用,只要在请求中提供会话令牌:http://developer.okta.com/docs/api/resources/oidc.html#authentication-request。事实上,可以使用这个脚本(https://github.com/SohaibAjmal/Okta-OpenId-Scripts) 来完成流程。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-06-15
        • 1970-01-01
        • 2021-07-17
        • 2012-11-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多