keycloak-service
クラス | 公開メンバ関数 | 限定公開メンバ関数 | 静的限定公開変数類 | 変数 | 静的非公開変数類 | 全メンバ一覧
org.keycloak.social.twitter.TwitterIdentityProvider クラス
org.keycloak.social.twitter.TwitterIdentityProvider の継承関係図
Inheritance graph
org.keycloak.social.twitter.TwitterIdentityProvider 連携図
Collaboration graph

クラス

class  Endpoint
 

公開メンバ関数

 TwitterIdentityProvider (KeycloakSession session, OAuth2IdentityProviderConfig config)
 
Object callback (RealmModel realm, AuthenticationCallback callback, EventBuilder event)
 
Response performLogin (AuthenticationRequest request)
 
Response exchangeFromToken (UriInfo uriInfo, EventBuilder builder, ClientModel authorizedClient, UserSessionModel tokenUserSession, UserModel tokenSubject, MultivaluedMap< String, String > params)
 
Response retrieveToken (KeycloakSession session, FederatedIdentityModel identity)
 
void authenticationFinished (AuthenticationSessionModel authSession, BrokeredIdentityContext context)
 

限定公開メンバ関数

Response exchangeStoredToken (UriInfo uriInfo, ClientModel authorizedClient, UserSessionModel tokenUserSession, UserModel tokenSubject)
 
Response exchangeSessionToken (UriInfo uriInfo, ClientModel authorizedClient, UserSessionModel tokenUserSession, UserModel tokenSubject)
 

静的限定公開変数類

static final Logger logger = Logger.getLogger(TwitterIdentityProvider.class)
 

変数

String TWITTER_TOKEN_TYPE ="twitter"
 

静的非公開変数類

static final String TWITTER_TOKEN = "twitter_token"
 
static final String TWITTER_TOKENSECRET = "twitter_tokenSecret"
 

詳解

著者
Stian Thorgersen

構築子と解体子

◆ TwitterIdentityProvider()

org.keycloak.social.twitter.TwitterIdentityProvider.TwitterIdentityProvider ( KeycloakSession  session,
OAuth2IdentityProviderConfig  config 
)
inline
75  {
76  super(session, config);
77  }

関数詳解

◆ authenticationFinished()

void org.keycloak.social.twitter.TwitterIdentityProvider.authenticationFinished ( AuthenticationSessionModel  authSession,
BrokeredIdentityContext  context 
)
inline
264  {
265  authSession.setUserSessionNote(IdentityProvider.FEDERATED_ACCESS_TOKEN, (String)context.getContextData().get(IdentityProvider.FEDERATED_ACCESS_TOKEN));
266 
267  }

◆ callback()

Object org.keycloak.social.twitter.TwitterIdentityProvider.callback ( RealmModel  realm,
AuthenticationCallback  callback,
EventBuilder  event 
)
inline
80  {
81  return new Endpoint(realm, callback, event);
82  }
Object callback(RealmModel realm, AuthenticationCallback callback, EventBuilder event)
Definition: TwitterIdentityProvider.java:80

◆ exchangeFromToken()

Response org.keycloak.social.twitter.TwitterIdentityProvider.exchangeFromToken ( UriInfo  uriInfo,
EventBuilder  builder,
ClientModel  authorizedClient,
UserSessionModel  tokenUserSession,
UserModel  tokenSubject,
MultivaluedMap< String, String >  params 
)
inline
107  {
108  String requestedType = params.getFirst(OAuth2Constants.REQUESTED_TOKEN_TYPE);
109  if (requestedType != null && !requestedType.equals(TWITTER_TOKEN_TYPE)) {
110  return exchangeUnsupportedRequiredType();
111  }
112  if (!getConfig().isStoreToken()) {
113  String brokerId = tokenUserSession.getNote(Details.IDENTITY_PROVIDER);
114  if (brokerId == null || !brokerId.equals(getConfig().getAlias())) {
115  return exchangeNotLinkedNoStore(uriInfo, authorizedClient, tokenUserSession, tokenSubject);
116  }
117  return exchangeSessionToken(uriInfo, authorizedClient, tokenUserSession, tokenSubject);
118  } else {
119  return exchangeStoredToken(uriInfo, authorizedClient, tokenUserSession, tokenSubject);
120  }
121  }
Response exchangeStoredToken(UriInfo uriInfo, ClientModel authorizedClient, UserSessionModel tokenUserSession, UserModel tokenSubject)
Definition: TwitterIdentityProvider.java:123
Response exchangeSessionToken(UriInfo uriInfo, ClientModel authorizedClient, UserSessionModel tokenUserSession, UserModel tokenSubject)
Definition: TwitterIdentityProvider.java:145
String TWITTER_TOKEN_TYPE
Definition: TwitterIdentityProvider.java:67

◆ exchangeSessionToken()

Response org.keycloak.social.twitter.TwitterIdentityProvider.exchangeSessionToken ( UriInfo  uriInfo,
ClientModel  authorizedClient,
UserSessionModel  tokenUserSession,
UserModel  tokenSubject 
)
inlineprotected
145  {
146  String accessToken = tokenUserSession.getNote(IdentityProvider.FEDERATED_ACCESS_TOKEN);
147  if (accessToken == null) {
148  return exchangeTokenExpired(uriInfo, authorizedClient, tokenUserSession, tokenSubject);
149  }
150  AccessTokenResponse tokenResponse = new AccessTokenResponse();
151  tokenResponse.setToken(accessToken);
152  tokenResponse.setIdToken(null);
153  tokenResponse.setRefreshToken(null);
154  tokenResponse.setRefreshExpiresIn(0);
155  tokenResponse.getOtherClaims().clear();
156  tokenResponse.getOtherClaims().put(OAuth2Constants.ISSUED_TOKEN_TYPE, TWITTER_TOKEN_TYPE);
157  tokenResponse.getOtherClaims().put(ACCOUNT_LINK_URL, getLinkingUrl(uriInfo, authorizedClient, tokenUserSession));
158  return Response.ok(tokenResponse).type(MediaType.APPLICATION_JSON_TYPE).build();
159  }
String TWITTER_TOKEN_TYPE
Definition: TwitterIdentityProvider.java:67

◆ exchangeStoredToken()

Response org.keycloak.social.twitter.TwitterIdentityProvider.exchangeStoredToken ( UriInfo  uriInfo,
ClientModel  authorizedClient,
UserSessionModel  tokenUserSession,
UserModel  tokenSubject 
)
inlineprotected
123  {
124  FederatedIdentityModel model = session.users().getFederatedIdentity(tokenSubject, getConfig().getAlias(), authorizedClient.getRealm());
125  if (model == null || model.getToken() == null) {
126  return exchangeNotLinked(uriInfo, authorizedClient, tokenUserSession, tokenSubject);
127  }
128  String accessToken = model.getToken();
129  if (accessToken == null) {
130  model.setToken(null);
131  session.users().updateFederatedIdentity(authorizedClient.getRealm(), tokenSubject, model);
132  return exchangeTokenExpired(uriInfo, authorizedClient, tokenUserSession, tokenSubject);
133  }
134  AccessTokenResponse tokenResponse = new AccessTokenResponse();
135  tokenResponse.setToken(accessToken);
136  tokenResponse.setIdToken(null);
137  tokenResponse.setRefreshToken(null);
138  tokenResponse.setRefreshExpiresIn(0);
139  tokenResponse.getOtherClaims().clear();
140  tokenResponse.getOtherClaims().put(OAuth2Constants.ISSUED_TOKEN_TYPE, TWITTER_TOKEN_TYPE);
141  tokenResponse.getOtherClaims().put(ACCOUNT_LINK_URL, getLinkingUrl(uriInfo, authorizedClient, tokenUserSession));
142  return Response.ok(tokenResponse).type(MediaType.APPLICATION_JSON_TYPE).build();
143  }
String TWITTER_TOKEN_TYPE
Definition: TwitterIdentityProvider.java:67

◆ performLogin()

Response org.keycloak.social.twitter.TwitterIdentityProvider.performLogin ( AuthenticationRequest  request)
inline
85  {
86  try {
87  Twitter twitter = new TwitterFactory().getInstance();
88  twitter.setOAuthConsumer(getConfig().getClientId(), getConfig().getClientSecret());
89 
90  URI uri = new URI(request.getRedirectUri() + "?state=" + request.getState().getEncoded());
91 
92  RequestToken requestToken = twitter.getOAuthRequestToken(uri.toString());
93  AuthenticationSessionModel authSession = request.getAuthenticationSession();
94 
95  authSession.setAuthNote(TWITTER_TOKEN, requestToken.getToken());
96  authSession.setAuthNote(TWITTER_TOKENSECRET, requestToken.getTokenSecret());
97 
98  URI authenticationUrl = URI.create(requestToken.getAuthenticationURL());
99 
100  return Response.seeOther(authenticationUrl).build();
101  } catch (Exception e) {
102  throw new IdentityBrokerException("Could send authentication request to twitter.", e);
103  }
104  }
static final String TWITTER_TOKENSECRET
Definition: TwitterIdentityProvider.java:73
static final String TWITTER_TOKEN
Definition: TwitterIdentityProvider.java:72

◆ retrieveToken()

Response org.keycloak.social.twitter.TwitterIdentityProvider.retrieveToken ( KeycloakSession  session,
FederatedIdentityModel  identity 
)
inline
259  {
260  return Response.ok(identity.getToken()).type(MediaType.APPLICATION_JSON).build();
261  }

メンバ詳解

◆ logger

final Logger org.keycloak.social.twitter.TwitterIdentityProvider.logger = Logger.getLogger(TwitterIdentityProvider.class)
staticprotected

◆ TWITTER_TOKEN

final String org.keycloak.social.twitter.TwitterIdentityProvider.TWITTER_TOKEN = "twitter_token"
staticprivate

◆ TWITTER_TOKEN_TYPE

String org.keycloak.social.twitter.TwitterIdentityProvider.TWITTER_TOKEN_TYPE ="twitter"
package

◆ TWITTER_TOKENSECRET

final String org.keycloak.social.twitter.TwitterIdentityProvider.TWITTER_TOKENSECRET = "twitter_tokenSecret"
staticprivate

このクラス詳解は次のファイルから抽出されました: