2017-12-08 28 views
0

okta、javascriptを初めて使用しています。私は既存のJquery/javascript + FlaskアプリケーションにOktaAuthを追加しようとしています。OktaAuth Javascript + Flaskコードと状態値を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コードにクライアント秘密を持っているのは危険です!クライアントの秘密を公開することは、自分のパスワードを明らかにすることに似ています。それを削除して、安全のために新しいクライアントID /秘密情報を生成することを検討する必要があります。

OktaAuthが使用するのは、サーバー側のコールバック(コードフロー)を使用する方法と、クライアント側(完全なフロー)を使用する方法の2つです。あなたはここで両方をやろうとしています。それはおそらく奇妙なことです。代わりに

、次の操作を行います。

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 
    }); 
} 

これはあなたがクライアント側で使用できるIDトークンを取得します。発生したエラーをコンソールおよびネットワークパネルで監視してください。

関連する問題