OKTA - OAuthError: Illegal value for redirect_uri parameter
OKTA - OAuthError: Illegal value for redirect_uri parameter
我在 OKTA 中使用我的开发者帐户工作。
我正在尝试获取一个非常简单的 SPA 应用程序以从 OKTA 获取 JWT。
我使用 authClient.signIn({}) 登录并且 returns a transaction.sessionToken/
使用该会话令牌我应该能够调用 authClient.token.getWithoutPrompt({}) 但我永远无法访问该代码。
我收到以下错误:OAuthError:redirect_uri 参数的非法值。
如何解决此 OAuth 错误,以便最终取回 JWT。我在 OKTA GIT 上尝试过示例,但无法正常工作。
function getJWT()
{
var orgUrl = 'https://MYXXXXXXX.oktapreview.com';
var keyID = "MY CLIENT ID";
var user = "MYUSER ID";
var pwd = "MY PASWORD"
var appScope = ['openid', 'email', 'profile', 'phone', 'groups'];
var authClient = new OktaAuth({url: orgUrl, clientId: keyID,});
$('#tokendiv').html('');
authClient.signIn({
username: user,
password: pwd,
redirectUri: "http://localhost:5656/test.html" //THIS IS SETUP IN MY OKTA ID
})
.then(function(transaction) {
if (transaction.status === 'SUCCESS') {
authClient.session.setCookieAndRedirect(transaction.sessionToken); // Sets a cookie on redirect
console.log(transaction.sessionToken);
$('#tokendiv').append('<h4>Session Token</h4>' + transaction.sessionToken);
/// THIS IS NEVER REACHED, I Always Get OAuthError: Illegal value for redirect_uri parameter.
authClient.token.getWithoutPrompt({
responseType: 'id_token', // or array of types
scopes: appScope,
sessionToken: transaction.sessionToken
})
.then(function(res) {
console.log("JWT: " + jwt);
$('#tokendiv').append('<h4>JWT</h4>' + res.idToken);
})
.fail(function(err) {
console.log("ERROR " + err);
$('#tokendiv').append('<h4>Error</h4>' + err);
})
} else {
throw 'We cannot handle the ' + transaction.status + ' status';
}
})
.fail(function(err) {
console.error(err);
});
}
只要您的redirectUri
包含在您Okta Developer organization中批准的重定向URI中,您就不会收到该错误。
下面我能够在 localhost:5656
上成功 return 一个 id_token
运行。
<!-- index.html -->
<html>
<body>
<button onClick="getJWT()">Button</button>
<div id="tokendiv"></div>
</body>
</html>
<script>
function getJWT(){
var orgUrl = 'https://{{org}}.oktapreview.com';
var keyID = "{{clientId}}";
var user = "{{user}}";
var pwd = "{{password}}"
var appScope = ['openid', 'email', 'profile', 'phone', 'groups'];
var authClient = new OktaAuth(
{
url: orgUrl,
clientId: keyID,
redirectUri: "http://localhost:5656/index.html"
});
$('#tokendiv').html('');
authClient.signIn({
username: user,
password: pwd,
})
.then(function(transaction) {
if (transaction.status === 'SUCCESS') {
authClient.token.getWithoutPrompt({
responseType: 'id_token', // or array of types
scopes: appScope,
sessionToken: transaction.sessionToken
})
.then(function(res) {
$('#tokendiv').append('<h4>JWT</h4>' + res.idToken);
console.log("JWT: " + JSON.stringify(res));
})
.fail(function(err) { /* err */ })
} else { /* throw error */ }
})
.fail(function(err) { /* err */ });
}
</script>
我在 OKTA 中使用我的开发者帐户工作。
我正在尝试获取一个非常简单的 SPA 应用程序以从 OKTA 获取 JWT。
我使用 authClient.signIn({}) 登录并且 returns a transaction.sessionToken/
使用该会话令牌我应该能够调用 authClient.token.getWithoutPrompt({}) 但我永远无法访问该代码。
我收到以下错误:OAuthError:redirect_uri 参数的非法值。
如何解决此 OAuth 错误,以便最终取回 JWT。我在 OKTA GIT 上尝试过示例,但无法正常工作。
function getJWT()
{
var orgUrl = 'https://MYXXXXXXX.oktapreview.com';
var keyID = "MY CLIENT ID";
var user = "MYUSER ID";
var pwd = "MY PASWORD"
var appScope = ['openid', 'email', 'profile', 'phone', 'groups'];
var authClient = new OktaAuth({url: orgUrl, clientId: keyID,});
$('#tokendiv').html('');
authClient.signIn({
username: user,
password: pwd,
redirectUri: "http://localhost:5656/test.html" //THIS IS SETUP IN MY OKTA ID
})
.then(function(transaction) {
if (transaction.status === 'SUCCESS') {
authClient.session.setCookieAndRedirect(transaction.sessionToken); // Sets a cookie on redirect
console.log(transaction.sessionToken);
$('#tokendiv').append('<h4>Session Token</h4>' + transaction.sessionToken);
/// THIS IS NEVER REACHED, I Always Get OAuthError: Illegal value for redirect_uri parameter.
authClient.token.getWithoutPrompt({
responseType: 'id_token', // or array of types
scopes: appScope,
sessionToken: transaction.sessionToken
})
.then(function(res) {
console.log("JWT: " + jwt);
$('#tokendiv').append('<h4>JWT</h4>' + res.idToken);
})
.fail(function(err) {
console.log("ERROR " + err);
$('#tokendiv').append('<h4>Error</h4>' + err);
})
} else {
throw 'We cannot handle the ' + transaction.status + ' status';
}
})
.fail(function(err) {
console.error(err);
});
}
只要您的redirectUri
包含在您Okta Developer organization中批准的重定向URI中,您就不会收到该错误。
下面我能够在 localhost:5656
上成功 return 一个 id_token
运行。
<!-- index.html -->
<html>
<body>
<button onClick="getJWT()">Button</button>
<div id="tokendiv"></div>
</body>
</html>
<script>
function getJWT(){
var orgUrl = 'https://{{org}}.oktapreview.com';
var keyID = "{{clientId}}";
var user = "{{user}}";
var pwd = "{{password}}"
var appScope = ['openid', 'email', 'profile', 'phone', 'groups'];
var authClient = new OktaAuth(
{
url: orgUrl,
clientId: keyID,
redirectUri: "http://localhost:5656/index.html"
});
$('#tokendiv').html('');
authClient.signIn({
username: user,
password: pwd,
})
.then(function(transaction) {
if (transaction.status === 'SUCCESS') {
authClient.token.getWithoutPrompt({
responseType: 'id_token', // or array of types
scopes: appScope,
sessionToken: transaction.sessionToken
})
.then(function(res) {
$('#tokendiv').append('<h4>JWT</h4>' + res.idToken);
console.log("JWT: " + JSON.stringify(res));
})
.fail(function(err) { /* err */ })
} else { /* throw error */ }
})
.fail(function(err) { /* err */ });
}
</script>