2017-01-31 62 views
1

Я работаю на своей учетной записи разработчика в OKTA.OKTA - OAuthError: Недопустимое значение параметра redirect_uri

Я пытаюсь получить очень простое приложение SPA для получения JWT от OKTA.

  1. я Войти с authClient.signIn ({}) и возвращает transaction.sessionToken/

  2. С этой сессией я маркера должен быть в состоянии назвать 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); 
     }); 
} 
+0

Я обнаружил, что если я удалил authClient.token.getWithoutPrompt ({}) Я больше не получаю ошибку, но мне нужен этот метод, чтобы получить JWT. –

ответ

1

Пока ваш redirectUri включен в утвержденный Перенаправление URIs в вашем Okta Developer organization, вы не должны получать эту ошибку.

Ниже я смог успешно вернуть id_token на localhost:5656.

<!-- 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> 
+0

Я упомянул. redirectUri: "http: // localhost: 5656/test.html" // Это настройка в моей OKTA –

+1

Просто хотел проверить. OktaAuth отправляет текущий URL-адрес браузера, а не redirectUri, указанный в объекте конфигурации. Я обновил свой ответ, чтобы показать, как настроить перенаправление. – jmelberg

+0

Ваше обновление показало мне проблему. У меня был redirectUri под authClient.signIn, но (как вы показали) он должен был быть в var authClient = new OktaAuth. СПАСИБО! –