2017-01-31 9 views
1

私はOKTAの開発者アカウントで働いています。OKTA - OAuthError:redirect_uriパラメータの値が無効

私はOKTからJWTを取得するために非常に簡単なSPAアプリケーションを取得しようとしています。

  1. {(私はauthClient.token.getWithoutPromptを呼び出すことができるはず私はauthClient.signIn({})でログインし、それはそのセッショントークンとtransaction.sessionToken/

  2. を返します})しかし、私はそのコードに到達することはできません。

次のエラーが表示されます。OAuthError:redirect_uriパラメータの値が正しくありません。私は最終的にJWTを取り戻すことができるように

は、どのように私はこのOAuthのエラーを超えて取得します。私は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を削除した場合({})Iがもはやエラーを取得し、私はJWTを得るために、その方法を必要とすることが見つかりません。 –

答えて

1

限り、あなたのredirectUriがあなたのOkta Developer organizationで承認リダイレクトURIのに含まれているとして、あなたはそのエラーを受け取るべきではありません。

は、私は正常localhost:5656上で実行されている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> 
+0

私は言及しました。 redirectUri: "http:// localhost:5656/test.html" //これは私のOKTAに設定されています –

+1

確認したかっただけです。 OktaAuthは、設定オブジェクトで指定されたredirectUriではなく、現在のブラウザURLを送信しています。リダイレクトを設定する方法を示すために私の答えを更新しました。 – jmelberg

+0

あなたのアップデートで私に問題が示されました。私はredirectUriをauthClient.signInの下に持っていましたが、あなたが示したように、それはvar authClient = new OktaAuthの下にあったはずです。ありがとうございました! –

関連する問題