OktaAuth Javascript + Flask не передает код и значение состояния в Flask
Я новичок в Okta, Javascript. Я пытаюсь добавить OktaAuth в существующее приложение Jquery/javascript + Flask.
Я настроил следующее в моем Javascript. Перенаправление вызовов на серверный обратный вызов работает. Но не передавайте код, укажите значения для его продолжения. Можете ли вы дать мне знать, что здесь не так? Любая помощь приветствуется.
var authClient = new OktaAuth({
url: 'https://{okta-url}.com',
clientId: 'xxxxxx',
clientSecret: 'yyyyyyyyyy',
issuer: 'https://{okta-url}.com',
redirectUri: 'http://{redirect-url}/login'
//scopes: ['openid', 'email', 'profile']
});
var idToken = authClient.tokenManager.get('idToken');
console.log(JSON.stringify(idToken))
if (idToken) {
console.log('hi ${idToken.claims.email}!');
}
else if (location.hash) {
authClient.token.parseFromUrl()
.then(function (idToken) {
console.log('hi ${idToken.claims.email}!');
authClient.tokenManager.add('idToken', idToken);
console.log(idToken);
});
console.log(JSON.stringify(authClient.token))
}
else {
authClient.token.getWithRedirect({
responseType: ['id_token', 'code', 'token']
});
console.log(authClient.token)
}
1 ответ
Предупреждение: опасно иметь секрет вашего клиента в коде JavaScript! Раскрытие тайны клиента похоже на раскрытие вашего пароля. Вы должны удалить его и рассмотреть возможность создания нового идентификатора клиента / секрета просто для безопасности.
Существует два основных способа использования OpenID Connect, которые использует OktaAuth: с обратным вызовом на стороне сервера (поток кода) или полностью на стороне клиента (неявный поток). Вы пытаетесь сделать и то, и другое, поэтому, вероятно, это странно.
Вместо этого сделайте это:
var authClient = new OktaAuth({
url: 'https://{okta-url}.com',
clientId: 'xxxxxx',
issuer: 'default', // Use the default Authorization Server
});
var idToken = authClient.tokenManager.get('idToken');
if (idToken) {
console.log('hi ${idToken.claims.email}!');
}
else if (location.hash) {
authClient.token.parseFromUrl()
.then(function (idToken) {
authClient.tokenManager.add('idToken', idToken);
console.log(idToken);
});
}
else {
authClient.token.getWithRedirect({
responseType: 'id_token'
// Use ['id_token', 'token'] if you also need an access token
});
}
Это даст вам идентификационный токен, который вы можете использовать на стороне клиента. Следите за консолью и сетевыми панелями на наличие ошибок.