2017-04-06 170 views
1

我使用Okta的API将Okta与我自己的IdP服务器相集成。Okta:无法通过API调用获取授权代码

我按照以下步骤执行授权码流:

  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的Location头还有code值的响应。

但是,我不断收到状态代码为200且没有Location标题的回复,其中html正文称“您正在使用不支持的浏览器”。和“JavaScript在浏览器上被禁用”。

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

我失去了通过API获取授权码任何额外的要求吗?请帮忙。

感谢提前:)

回答

0

授权码交付式,并在那里授权端点的意思是通过浏览器,而不是一个非浏览器客户端访问。

0

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

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