无法在okta POST /sessions API调用中使用SessionToken创建会话

Unable to create session using SessionToken in okta POST /sessions API call

本文关键字:SessionToken 会话 创建 调用 API okta POST sessions      更新时间:2023-09-26

我能够使用用户名和密码获得sessionToken。但是,在那之后,我想在AngularJS中使用POST调用创建会话,如下所示。angular(整个web应用)托管在AWS S3上。

var session_data = { 'sessionToken' : My_session_Token}; 
$http({
       method: 'POST',
       url: 'https://myorg.okta.com/api/v1/sessions',
       data: session_data,
       headers: {
            'Accept': 'application/json',
            'Content-Type': 'application/json',
          }
       }).then(function(response) {
            console.log(response);
       });
我得到的错误是
XMLHttpRequest cannot load https://myorg.okta.com/api/v1/sessions. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://s3.amazonaws.com' is therefore not allowed access.

我已经在Okta和S3桶中添加了CORS允许起源头。

当我尝试通过终端

执行以下操作时
curl -v -X POST '
-H "Accept: application/json" '
-H "Content-Type: application/json" '
-d '{
  "sessionToken": "my_session_Token"
}' "https://myorg.okta.com/api/v1/sessions"

第一次得到

{"errorCode":"E0000005","errorSummary":"Invalid session","errorLink":"E0000005","errorId":"oaefADOnPONTDidUZYyrVc5rQ","errorCauses":[]}MAC-S014568:~

第二次,因为sessionToken是一次使用,我得到以下错误

{"errorCode":"E0000004","errorSummary":"Authentication failed","errorLink":"E0000004","errorId":"oaeI-KKSO-iRGSR1gmyUjBS8g","errorCauses":[]}MAC-S01

我不认为问题是由于CORS头(允许原点),因为我已经添加了原点。此外,我不能使用SSWS {api_TOKEN},因为我的应用程序在angular中,暴露api令牌是有风险的。

Okta不支持post到/api/v1/sessions来设置浏览器中的cookie。对于一个简单的用例,您可以使用重定向流:

window.location = 'https://myorg.okta.com/login/sessionCookieRedirect?token={sessionToken}&redirectUrl={redirectUrl}';

这里列出了使用sessionToken设置cookie的所有允许的方法:http://developer.okta.com/use_cases/authentication/session_cookie