我正在使用Okta的API将Okta集成到我自己的IdP服务器中。
我正按照以下步骤实施授权代码流:
在我自己的服务器中,使用/api/v1/authn
端点获取sessionToken。
使用sessionToken通过调用此端点获取授权:/oauth2/v1/authorize?client_id=" + clientId + "&sessionToken=" + sessionToken + "&response_type=code&response_mode=query&scope=openid&redirect_uri=" + redirectUrl + "&state=evanyang&nonce="
应该返回状态代码为302
且包含重定向网址的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)
授权代码授权类型和授权端点意味着可以通过浏览器访问,而不是非浏览器客户端。
答案 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)来完成流程。