okta API を介してセッション トークンを作成しようとしています。okta ドキュメントで CORS を有効にしました。
以下の「GET」が機能します。
function testGetApps() {
var baseUrl = 'https://mydomain.okta.com';
$.ajax({
url: baseUrl + '/api/v1/users/userId/appLinks',
type: 'GET',
accept: 'application/json',
headers: { Authorization : 'SSWS oktaApiKey'}
}).done(function (data) {
console.log(data);
})
.fail(function (xhr, textStatus, error) {
var title, message;
switch (xhr.status) {
case 403:
title = xhr.responseJSON.errorSummary;
message = 'Please login to your Okta organization before running the test';
break;
default:
title = 'Invalid URL or Cross-Origin Request Blocked';
message = 'You must explictly add this site (' + window.location.origin + ') to the list of allowed websites in your Okta Admin Dashboard';
break;
}
alert(title + ': ' + message);
});
}
ただし、以下の「POST」はエラーで失敗します。
XMLHttpRequest はhttps://mydomain.okta.com/api/v1/sessions?additionalFields=cookieTokenを読み込めません。要求されたリソースに「Access-Control-Allow-Origin」ヘッダーがありません。したがって、オリジン「http://mydomain」へのアクセスは許可されていません。
function initOktaSession() {
var txtUserName = $('UserName').val();
var txtPassword = $('Password').val();
var data = { username: txtUserName, password: txtPassword };
var requestUrl = 'https://mydomain.okta.com/api/v1/sessions?additionalFields=cookieToken';
//Call Webservices to update
$.ajax({
type: 'POST',
url: requestUrl,
headers: {authorization : 'SSWS oktaApiKey'},
contentType: 'application/json',
data: JSON.stringify(data),
async: true,
success: function (data) {
console.log(data);
},
error: function (err) {
console && console.log(err);
!console && alert(err.status + ' ' + err.statusText);
}
});
}