Keycloak(スタンドアロン)v1.9.4.FinalインストールのセットアップはAWSインスタンスでWildfly 10を使用しており、keycloak(keycloakのログインページ経由)とTwitter4jを使用してユーザーを認証しようとしています私のアプリケーションは、ユーザーのタイムラインなどを認証して閲覧することができます。Keycloakから返されたユーザーOauthトークンへのアクセス
私はアイデンティティプロバイダ(Twitter)、レルム、およびクライアントアプリケーションを設定しました。
また、apps.twitter.comにTwitterアプリケーションの設定があり、twitter4j.propertiesファイルにキーが設定されています。
- ゴー自分のアプリケーションのJSFのWebページへとKeycloakの/認証ログインページにリダイレクトされます
- Twitterのロゴをクリックして、自分のTwitterアカウント(別のアカウントからでログイン:
はこれまでのところ、私ができることになっています
- Keycloakが尋ねるユーザー情報の入力
- ユーザー情報の入力後、Keycloakは、ユーザーをクライアントアプリケーション(この場合はJSFページ)に戻すことに成功しました。
問題は、OAuth AccessTokenとAccessTokenSecretにアクセスして、TwitterアプリケーションのConsumerKeyとConsumerKeySecretを組み合わせる方法がわかりません。私たちは、様々なトークンを手配する方法に応じて(別のトークンをしようとTwitterBean.java
@Context
private final FacesContext facesContext = FacesContext.getCurrentInstance();
private final Twitter twitter = TwitterFactory.getSingleton();
public String getUserInfo() {
if (facesContext != null) {
HttpSession httpSession = (HttpSession) facesContext.getExternalContext().getSession(false);
KeycloakSecurityContext keycloakContext = (RefreshableKeycloakSecurityContext) httpSession.getAttribute(KeycloakSecurityContext.class.getName());
queryTwitter(keycloakContext.getTokenString(), keycloakContext.getIdTokenString());
}
}
public void queryTwitter(String accessToken, String accessTokenSecret) {
ConfigurationBuilder cb = new ConfigurationBuilder();
cb.setDebugEnabled(true)
.setOAuthConsumerKey("APPLICATIONS_CONSUMER_KEY")
.setOAuthConsumerSecret("APPLICATIONS_CONSUMER_KEY_SECRET")
.setOAuthAccessToken(accessToken)
.setOAuthAccessTokenSecret(accessTokenSecret);
TwitterFactory tf = new TwitterFactory(cb.build());
twitter = tf.getInstance();
user = twitter.verifyCredentials();
...
}
twitterLogin.xhtml
...
#{twitterBean.getUserInfo()}
...
:以下
.getTokenString()メソッドと.getIdTokenString()メソッドは正しいメソッドではありませんが、Keycloakがユーザーのoauthトークンを提供する場所は紛失しています。
facesContext.getExternalContext()。getRequest()とfacesContext.getExternalContext()。getResponse()を見てみました。
私の質問は、ユーザーがTwitterで認証してKeycloak内にユーザーを登録した後、Keycloakがクライアントアプリケーション(サービスプロバイダ)にリダイレクトされたときにoauthトークンが保持されているため、認証(アプリケーション/ユーザー認証)?