2017-07-10 45 views
0

キークローケを使用して、Javaで書かれたものと、JavaScriptで書かれたもの(Reactがあるもの)の両方を安全にする予定です。Keycloak現在ログインしているユーザーを取得するためのJavaScript API

ユーザーがkeycloakでログインした後、ログインするユーザーとそのユーザーが持つレルム/クライアントの役割を取得する必要があります。

  • Javaアプリケーションの場合、keycloak Java API (request -> KeycloakSecurityContext -> getIdToken -> getPreferredUsername/getOtherClaims)を試しました。彼らはうまく動作するようです。
  • JavaScriptアプリケーションの場合、次のコードを試しましたが、Keycloakをinitに正常に取得できませんでした(これは、ユーザーが既にkeycloakによって認証されてからWebアプリケーションコードにあります。 )どのような役割でログイン誰が取得:

    var kc = Keycloak({ 
        url: 'https://135.112.123.194:8666/auth', 
        realm: 'oneRealm', 
        clientId: 'main' 
    }); 
    
    //this does not work as it can't find the keycloak.json file under WEB-INF 
    //var kc = Keycloak('./keycloak.json'); 
    
    kc.init().success(function() { 
        console.log("kc.idToken.preferred_username: " + kc.idToken.preferred_username); 
        alert(JSON.stringify(kc.tokenParsed)); 
        var authenticatedUser = kc.idTokenParsed.name; 
        console.log(authenticatedUser); 
    }).error(function() { 
        window.location.reload(); 
    }); 
    

私はウェブアプリは、現在のユーザーの情報を取得する必要があることはかなり一般的だろうと仮定します。上記のコードがうまくいかなかった理由は誰でも知っていますか?

ありがとうございました。

答えて

1

あなたのコードでは、初期化するKeycloakクライアントライブラリを要求しますが、すでにユーザがログインしている場合には、ユーザーまたは小切手のログインを実行しません

詳細については、マニュアルを参照してください。http://www.keycloak.org/docs/latest/securing_apps/index.html#_javascript_adapter

  • は、ユーザーがログインしていると資格keycloak.init({ onLoad: 'check-sso' ... })を取得するかどうかを確認するためのinitにチェック-SSOを追加:あなたはおそらく何をしたいのか

    。あなたはlogin-requiredを使うかもしれません。

  • フロントエンドに別のクライアントを登録していることを確認してください。 Javaバックエンドクライアントは機密(またはベアラのみ)タイプですが、JavaScriptクライアントはpublicタイプです。

あなたはここに非常に最小限の例を見つける:https://github.com/ahus1/keycloak-dropwizard-integration/blob/master/keycloak-dropwizard-bearer/src/main/resources/assets/ajax/app.js

別の方法としては、ユーザ情報が取得された後に通知されるonAuthSuccessのためのコールバックを登録することができます。

フロントエンドでKeycloakを使用すると、すぐにバックエンドでRESTリソースを呼び出すときにベアラトークンを調べることになります。

+0

[link](https://keycloak.gitbooks.io/documentation/securing_apps/topics/oidc/javascript-adapter.html)の有効期限が切れています。あなたは新しいものを提供できますか? – user7244716

+1

@ user7244716 - ok、リンクが更新されました – ahus1

関連する問題