Okta:无法通过API调用获取授权代码

时间:2017-04-06 19:10:52

标签: authorization openid okta okta-api oidc

我正在使用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="

  3. 应该返回状态代码为302且包含重定向网址的Location标头以及code值的响应。

    但是,我一直收到状态代码为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获取授权码的任何额外要求?请帮忙。

    提前致谢:)

2 个答案:

答案 0 :(得分:0)

授权代码授权类型和授权端点意味着可以通过浏览器访问,而不是非浏览器客户端。

答案 1 :(得分:0)

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

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