keycloak
クラス | 公開メンバ関数 | 公開変数類 | 静的公開変数類 | 限定公開メンバ関数 | 限定公開変数類 | 静的限定公開変数類 | 変数 | 静的非公開変数類 | 全メンバ一覧
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)
 
getConfig ()
 
Response export (UriInfo uriInfo, RealmModel realm, String format)
 
void close ()
 
Object callback (RealmModel realm, AuthenticationCallback callback, EventBuilder event)
 
Response keycloakInitiatedBrowserLogout (KeycloakSession session, UserSessionModel userSession, UriInfo uriInfo, RealmModel realm)
 
void backchannelLogout (KeycloakSession session, UserSessionModel userSession, UriInfo uriInfo, RealmModel realm)
 
Response exchangeNotSupported ()
 
Response exchangeNotLinked (UriInfo uriInfo, ClientModel authorizedClient, UserSessionModel tokenUserSession, UserModel tokenSubject)
 
Response exchangeNotLinkedNoStore (UriInfo uriInfo, ClientModel authorizedClient, UserSessionModel tokenUserSession, UserModel tokenSubject)
 
Response exchangeTokenExpired (UriInfo uriInfo, ClientModel authorizedClient, UserSessionModel tokenUserSession, UserModel tokenSubject)
 
Response exchangeUnsupportedRequiredType ()
 
void preprocessFederatedIdentity (KeycloakSession session, RealmModel realm, BrokeredIdentityContext context)
 
void importNewUser (KeycloakSession session, RealmModel realm, UserModel user, BrokeredIdentityContext context)
 
void updateBrokeredUser (KeycloakSession session, RealmModel realm, UserModel user, BrokeredIdentityContext context)
 
IdentityProviderDataMarshaller getMarshaller ()
 
void preprocessFederatedIdentity (KeycloakSession session, RealmModel realm, BrokeredIdentityContext context)
 
void importNewUser (KeycloakSession session, RealmModel realm, UserModel user, BrokeredIdentityContext context)
 
void updateBrokeredUser (KeycloakSession session, RealmModel realm, UserModel user, BrokeredIdentityContext context)
 
void backchannelLogout (KeycloakSession session, UserSessionModel userSession, UriInfo uriInfo, RealmModel realm)
 
Response keycloakInitiatedBrowserLogout (KeycloakSession session, UserSessionModel userSession, UriInfo uriInfo, RealmModel realm)
 
Response export (UriInfo uriInfo, RealmModel realm, String format)
 
IdentityProviderDataMarshaller getMarshaller ()
 
void close ()
 

公開変数類

String EXTERNAL_IDENTITY_PROVIDER
 
String FEDERATED_ACCESS_TOKEN
 
String EXTERNAL_IDENTITY_PROVIDER = "EXTERNAL_IDENTITY_PROVIDER"
 
String FEDERATED_ACCESS_TOKEN = "FEDERATED_ACCESS_TOKEN"
 

静的公開変数類

static final String ACCOUNT_LINK_URL = "account-link-url"
 

限定公開メンバ関数

Response exchangeStoredToken (UriInfo uriInfo, ClientModel authorizedClient, UserSessionModel tokenUserSession, UserModel tokenSubject)
 
Response exchangeSessionToken (UriInfo uriInfo, ClientModel authorizedClient, UserSessionModel tokenUserSession, UserModel tokenSubject)
 
Response exchangeErrorResponse (UriInfo uriInfo, ClientModel authorizedClient, UserSessionModel tokenUserSession, String errorCode, String reason)
 
String getLinkingUrl (UriInfo uriInfo, ClientModel authorizedClient, UserSessionModel tokenUserSession)
 

限定公開変数類

final KeycloakSession session
 

静的限定公開変数類

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  }
final C config
Definition: AbstractIdentityProvider.java:48
final KeycloakSession session
Definition: AbstractIdentityProvider.java:47

関数詳解

◆ authenticationFinished()

void org.keycloak.social.twitter.TwitterIdentityProvider.authenticationFinished ( AuthenticationSessionModel  authSession,
BrokeredIdentityContext  context 
)
inline

org.keycloak.broker.provider.IdentityProvider< C extends IdentityProviderModel >を実装しています。

264  {
265  authSession.setUserSessionNote(IdentityProvider.FEDERATED_ACCESS_TOKEN, (String)context.getContextData().get(IdentityProvider.FEDERATED_ACCESS_TOKEN));
266 
267  }

◆ backchannelLogout() [1/2]

void org.keycloak.broker.provider.AbstractIdentityProvider< C extends IdentityProviderModel >.backchannelLogout ( KeycloakSession  session,
UserSessionModel  userSession,
UriInfo  uriInfo,
RealmModel  realm 
)
inlineinherited
85  {
86 
87  }

◆ backchannelLogout() [2/2]

void org.keycloak.broker.provider.IdentityProvider< C extends IdentityProviderModel >.backchannelLogout ( KeycloakSession  session,
UserSessionModel  userSession,
UriInfo  uriInfo,
RealmModel  realm 
)
inherited

◆ callback() [1/2]

Object org.keycloak.broker.provider.AbstractIdentityProvider< C extends IdentityProviderModel >.callback ( RealmModel  realm,
AuthenticationCallback  callback,
EventBuilder  event 
)
inlineinherited
70  {
71  return null;
72  }

◆ callback() [2/2]

Object org.keycloak.social.twitter.TwitterIdentityProvider.callback ( RealmModel  realm,
AuthenticationCallback  callback,
EventBuilder  event 
)
inline

org.keycloak.broker.provider.IdentityProvider< C extends IdentityProviderModel >を実装しています。

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

◆ close() [1/2]

void org.keycloak.provider.Provider.close ( )
inherited

org.keycloak.models.sessions.infinispan.InfinispanUserSessionProvider, org.keycloak.storage.UserStorageManager, org.keycloak.protocol.saml.SamlProtocol, org.keycloak.storage.ldap.LDAPStorageProvider, org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider, org.keycloak.models.cache.infinispan.RealmCacheSession, org.keycloak.models.jpa.JpaUserProvider, org.keycloak.models.cache.infinispan.UserCacheSession, org.keycloak.forms.account.freemarker.FreeMarkerAccountProvider, org.keycloak.protocol.oidc.OIDCLoginProtocol, org.keycloak.models.jpa.session.JpaUserSessionPersisterProvider, org.keycloak.credential.UserCredentialStoreManager, org.keycloak.services.managers.DefaultBruteForceProtector, org.keycloak.connections.jpa.updater.liquibase.LiquibaseJpaUpdaterProvider, org.keycloak.email.freemarker.FreeMarkerEmailTemplateProvider, org.keycloak.protocol.saml.EntityDescriptorDescriptionConverter, org.keycloak.federation.kerberos.KerberosFederationProvider, org.keycloak.models.jpa.JpaUserCredentialStore, org.keycloak.storage.ClientStorageManager, org.keycloak.keys.infinispan.InfinispanPublicKeyStorageProvider, org.keycloak.models.sessions.infinispan.InfinispanAuthenticationSessionProvider, org.keycloak.services.clientregistration.AbstractClientRegistrationProvider, org.keycloak.authentication.authenticators.x509.AbstractX509ClientCertificateAuthenticator, org.keycloak.authentication.authenticators.resetcred.ResetCredentialEmail, org.keycloak.authentication.forms.RegistrationRecaptcha, org.keycloak.authentication.authenticators.browser.ScriptBasedAuthenticator, org.keycloak.email.DefaultEmailSenderProvider, org.keycloak.models.jpa.JpaRealmProvider, org.keycloak.exportimport.dir.DirImportProvider, org.keycloak.protocol.docker.DockerAuthV2Protocol, org.keycloak.authentication.authenticators.browser.SpnegoAuthenticator, org.keycloak.authorization.AuthorizationProvider, org.keycloak.authentication.authenticators.resetcred.ResetCredentialChooseUser, org.keycloak.authentication.forms.RegistrationUserCreation, org.keycloak.connections.jpa.updater.liquibase.lock.LiquibaseDBLockProvider, org.keycloak.theme.ExtendingThemeManager, org.keycloak.protocol.saml.installation.KeycloakSamlClientInstallation, org.keycloak.models.cache.infinispan.authorization.StoreFactoryCacheSession, org.keycloak.protocol.saml.installation.SamlIDPDescriptorClientInstallation, org.keycloak.authentication.authenticators.challenge.BasicAuthAuthenticator, org.keycloak.authentication.authenticators.cli.CliUsernamePasswordAuthenticator, org.keycloak.protocol.oidc.installation.KeycloakOIDCClientInstallation, org.keycloak.authentication.forms.RegistrationProfile, org.keycloak.authentication.requiredactions.UpdatePassword, org.keycloak.authentication.requiredactions.UpdateProfile, org.keycloak.protocol.saml.mappers.RoleNameMapper, org.keycloak.authentication.forms.RegistrationPassword, org.keycloak.protocol.oidc.OIDCWellKnownProvider, org.keycloak.events.log.JBossLoggingEventListenerProvider, org.keycloak.protocol.saml.profile.ecp.authenticator.HttpBasicAuthenticator, org.keycloak.connections.jpa.updater.liquibase.conn.DefaultLiquibaseConnectionProvider, org.keycloak.authentication.authenticators.console.ConsoleUsernamePasswordAuthenticator, org.keycloak.authentication.authenticators.broker.AbstractIdpAuthenticator, org.keycloak.protocol.saml.installation.ModAuthMellonClientInstallation, org.keycloak.authentication.authenticators.browser.IdentityProviderAuthenticator, org.keycloak.credential.hash.Pbkdf2PasswordHashProvider, org.keycloak.events.jpa.JpaEventStoreProvider, org.keycloak.authentication.authenticators.browser.UsernamePasswordForm, org.keycloak.authentication.authenticators.browser.OTPFormAuthenticator, org.keycloak.authentication.requiredactions.ConsoleUpdateTotp, org.keycloak.authentication.requiredactions.ConsoleVerifyEmail, org.keycloak.authentication.requiredactions.VerifyEmail, org.keycloak.authentication.requiredactions.TermsAndConditions, org.keycloak.authorization.protection.introspect.RPTIntrospectionProvider, org.keycloak.protocol.oidc.installation.KeycloakOIDCJbossSubsystemClientInstallation, org.keycloak.authentication.requiredactions.UpdateTotp, org.keycloak.models.UserProvider, org.keycloak.exportimport.dir.DirExportProvider, org.keycloak.models.UserSessionProvider, org.keycloak.scripting.DefaultScriptingProvider, org.keycloak.protocol.oidc.AccessTokenIntrospectionProvider, org.keycloak.protocol.saml.installation.SamlSPDescriptorClientInstallation, org.keycloak.exportimport.singlefile.SingleFileExportProvider, org.keycloak.exportimport.singlefile.SingleFileImportProvider, org.keycloak.policy.HashIterationsPasswordPolicyProviderFactory, org.keycloak.services.migration.DefaultMigrationProvider, org.keycloak.authentication.authenticators.resetcred.AbstractSetRequiredActionAuthenticator, org.keycloak.storage.ldap.mappers.AbstractLDAPStorageMapper, org.keycloak.services.clientregistration.AdapterInstallationClientRegistrationProvider, org.keycloak.timer.basic.BasicTimerProvider, org.keycloak.theme.FolderThemeProvider, org.keycloak.models.RealmProvider, org.keycloak.policy.HistoryPasswordPolicyProvider, org.keycloak.protocol.saml.installation.KeycloakSamlSubsystemInstallation, org.keycloak.storage.jpa.JpaUserFederatedStorageProvider, org.keycloak.authentication.authenticators.browser.CookieAuthenticator, org.keycloak.keys.AbstractGeneratedSecretKeyProvider, org.keycloak.authorization.jpa.store.JPAStoreFactory, org.keycloak.events.email.EmailEventListenerProvider, org.keycloak.authentication.authenticators.challenge.NoCookieFlowRedirectAuthenticator, org.keycloak.policy.BlacklistPasswordPolicyProvider, org.keycloak.authentication.authenticators.console.ConsoleOTPFormAuthenticator, org.keycloak.authentication.requiredactions.ConsoleTermsAndConditions, org.keycloak.models.sessions.infinispan.InfinispanCodeToTokenStoreProvider, org.keycloak.policy.RegexPatternsPasswordPolicyProvider, org.keycloak.models.sessions.infinispan.InfinispanStickySessionEncoderProvider, org.keycloak.cluster.infinispan.InfinispanClusterProvider, org.keycloak.authentication.requiredactions.ConsoleUpdateProfile, org.keycloak.exportimport.KeycloakClientDescriptionConverter, org.keycloak.policy.DefaultPasswordPolicyManagerProvider, org.keycloak.services.x509.AbstractClientCertificateFromHttpHeadersLookup, org.keycloak.theme.ClasspathThemeProvider, org.keycloak.policy.DigitsPasswordPolicyProvider, org.keycloak.policy.LowerCasePasswordPolicyProvider, org.keycloak.policy.SpecialCharsPasswordPolicyProvider, org.keycloak.policy.UpperCasePasswordPolicyProvider, org.keycloak.models.session.DisabledUserSessionPersisterProvider, org.keycloak.policy.NotUsernamePasswordPolicyProvider, org.keycloak.theme.DefaultThemeSelectorProvider, org.keycloak.connections.infinispan.DefaultInfinispanConnectionProvider, org.keycloak.provider.ExceptionConverter, org.keycloak.policy.LengthPasswordPolicyProvider, org.keycloak.authentication.forms.RegistrationPage, org.keycloak.protocol.oidc.OIDCClientDescriptionConverter, org.keycloak.theme.ClasspathThemeResourceProviderFactory, org.keycloak.policy.HashAlgorithmPasswordPolicyProviderFactory, org.keycloak.models.sessions.infinispan.InfinispanActionTokenStoreProvider, org.keycloak.authentication.authenticators.x509.X509ClientCertificateAuthenticator, org.keycloak.locale.DefaultLocaleSelectorProvider, org.keycloak.policy.ForceExpiredPasswordPolicyProviderFactory, org.keycloak.authentication.authenticators.directgrant.AbstractDirectGrantAuthenticator, org.keycloak.protocol.docker.installation.DockerComposeYamlInstallationProvider, org.keycloak.truststore.FileTruststoreProvider, org.keycloak.protocol.oidc.mappers.AbstractOIDCProtocolMapper, org.keycloak.authentication.authenticators.AttemptedAuthenticator, org.keycloak.authorization.policy.provider.drools.DroolsPolicyProvider, org.keycloak.services.clientregistration.policy.ClientRegistrationPolicy, org.keycloak.services.x509.DefaultClientCertificateLookup, org.keycloak.connections.jpa.DefaultJpaConnectionProvider, org.keycloak.authorization.config.UmaWellKnownProvider, org.keycloak.protocol.saml.mappers.AbstractSAMLProtocolMapper, org.keycloak.urls.HostnameProvider, org.keycloak.authentication.authenticators.client.AbstractClientAuthenticator, org.keycloak.keys.KeyProvider, org.keycloak.protocol.docker.installation.DockerRegistryConfigFileInstallationProvider, org.keycloak.protocol.docker.installation.DockerVariableOverrideInstallationProvider, org.keycloak.protocol.docker.mapper.DockerAuthV2ProtocolMapper, org.keycloak.transaction.JtaTransactionManagerLookup, org.keycloak.broker.provider.AbstractIdentityProviderMapper, org.keycloak.authentication.AbstractFormAuthenticator, org.keycloak.crypto.SignatureProvider, org.keycloak.credential.CredentialProvider, org.keycloak.protocol.oidc.ext.OIDCExtProvider (計143項目)で実装されています。

◆ close() [2/2]

65  {
66  // no-op
67  }

◆ exchangeErrorResponse()

Response org.keycloak.broker.provider.AbstractIdentityProvider< C extends IdentityProviderModel >.exchangeErrorResponse ( UriInfo  uriInfo,
ClientModel  authorizedClient,
UserSessionModel  tokenUserSession,
String  errorCode,
String  reason 
)
inlineprotectedinherited
104  {
105  Map<String, String> error = new HashMap<>();
106  error.put("error", errorCode);
107  error.put("error_description", reason);
108  String accountLinkUrl = getLinkingUrl(uriInfo, authorizedClient, tokenUserSession);
109  if (accountLinkUrl != null) error.put(ACCOUNT_LINK_URL, accountLinkUrl);
110  return Response.status(400).entity(error).type(MediaType.APPLICATION_JSON_TYPE).build();
111  }
String getLinkingUrl(UriInfo uriInfo, ClientModel authorizedClient, UserSessionModel tokenUserSession)
Definition: AbstractIdentityProvider.java:113
static final String ACCOUNT_LINK_URL
Definition: AbstractIdentityProvider.java:46

◆ exchangeFromToken()

Response org.keycloak.social.twitter.TwitterIdentityProvider.exchangeFromToken ( UriInfo  uriInfo,
EventBuilder  builder,
ClientModel  authorizedClient,
UserSessionModel  tokenUserSession,
UserModel  tokenSubject,
MultivaluedMap< String, String >  params 
)
inline

org.keycloak.broker.provider.ExchangeTokenToIdentityProviderTokenを実装しています。

107  {
108  String requestedType = params.getFirst(OAuth2Constants.REQUESTED_TOKEN_TYPE);
109  if (requestedType != null && !requestedType.equals(TWITTER_TOKEN_TYPE)) {
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 exchangeSessionToken(UriInfo uriInfo, ClientModel authorizedClient, UserSessionModel tokenUserSession, UserModel tokenSubject)
Definition: TwitterIdentityProvider.java:145
Response exchangeNotLinkedNoStore(UriInfo uriInfo, ClientModel authorizedClient, UserSessionModel tokenUserSession, UserModel tokenSubject)
Definition: AbstractIdentityProvider.java:100
Response exchangeStoredToken(UriInfo uriInfo, ClientModel authorizedClient, UserSessionModel tokenUserSession, UserModel tokenSubject)
Definition: TwitterIdentityProvider.java:123
Response exchangeUnsupportedRequiredType()
Definition: AbstractIdentityProvider.java:139
C getConfig()
Definition: AbstractIdentityProvider.java:55
String TWITTER_TOKEN_TYPE
Definition: TwitterIdentityProvider.java:67

◆ exchangeNotLinked()

Response org.keycloak.broker.provider.AbstractIdentityProvider< C extends IdentityProviderModel >.exchangeNotLinked ( UriInfo  uriInfo,
ClientModel  authorizedClient,
UserSessionModel  tokenUserSession,
UserModel  tokenSubject 
)
inlineinherited
96  {
97  return exchangeErrorResponse(uriInfo, authorizedClient, tokenUserSession, "not_linked", "identity provider is not linked");
98  }
Response exchangeErrorResponse(UriInfo uriInfo, ClientModel authorizedClient, UserSessionModel tokenUserSession, String errorCode, String reason)
Definition: AbstractIdentityProvider.java:104

◆ exchangeNotLinkedNoStore()

Response org.keycloak.broker.provider.AbstractIdentityProvider< C extends IdentityProviderModel >.exchangeNotLinkedNoStore ( UriInfo  uriInfo,
ClientModel  authorizedClient,
UserSessionModel  tokenUserSession,
UserModel  tokenSubject 
)
inlineinherited
100  {
101  return exchangeErrorResponse(uriInfo, authorizedClient, tokenUserSession, "not_linked", "identity provider is not linked, can only link to current user session");
102  }
Response exchangeErrorResponse(UriInfo uriInfo, ClientModel authorizedClient, UserSessionModel tokenUserSession, String errorCode, String reason)
Definition: AbstractIdentityProvider.java:104

◆ exchangeNotSupported()

Response org.keycloak.broker.provider.AbstractIdentityProvider< C extends IdentityProviderModel >.exchangeNotSupported ( )
inlineinherited
89  {
90  Map<String, String> error = new HashMap<>();
91  error.put("error", "invalid_target");
92  error.put("error_description", "target_exchange_unsupported");
93  return Response.status(400).entity(error).type(MediaType.APPLICATION_JSON_TYPE).build();
94  }

◆ 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 getLinkingUrl(UriInfo uriInfo, ClientModel authorizedClient, UserSessionModel tokenUserSession)
Definition: AbstractIdentityProvider.java:113
Response exchangeTokenExpired(UriInfo uriInfo, ClientModel authorizedClient, UserSessionModel tokenUserSession, UserModel tokenSubject)
Definition: AbstractIdentityProvider.java:135
String TWITTER_TOKEN_TYPE
Definition: TwitterIdentityProvider.java:67
static final String ACCOUNT_LINK_URL
Definition: AbstractIdentityProvider.java:46

◆ 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  }
FederatedIdentityModel getFederatedIdentity(UserModel user, String socialProvider, RealmModel realm)
String getLinkingUrl(UriInfo uriInfo, ClientModel authorizedClient, UserSessionModel tokenUserSession)
Definition: AbstractIdentityProvider.java:113
Response exchangeTokenExpired(UriInfo uriInfo, ClientModel authorizedClient, UserSessionModel tokenUserSession, UserModel tokenSubject)
Definition: AbstractIdentityProvider.java:135
void updateFederatedIdentity(RealmModel realm, UserModel federatedUser, FederatedIdentityModel federatedIdentityModel)
C getConfig()
Definition: AbstractIdentityProvider.java:55
String TWITTER_TOKEN_TYPE
Definition: TwitterIdentityProvider.java:67
static final String ACCOUNT_LINK_URL
Definition: AbstractIdentityProvider.java:46
final KeycloakSession session
Definition: AbstractIdentityProvider.java:47
Response exchangeNotLinked(UriInfo uriInfo, ClientModel authorizedClient, UserSessionModel tokenUserSession, UserModel tokenSubject)
Definition: AbstractIdentityProvider.java:96

◆ exchangeTokenExpired()

Response org.keycloak.broker.provider.AbstractIdentityProvider< C extends IdentityProviderModel >.exchangeTokenExpired ( UriInfo  uriInfo,
ClientModel  authorizedClient,
UserSessionModel  tokenUserSession,
UserModel  tokenSubject 
)
inlineinherited
135  {
136  return exchangeErrorResponse(uriInfo, authorizedClient, tokenUserSession, "token_expired", "linked token is expired");
137  }
Response exchangeErrorResponse(UriInfo uriInfo, ClientModel authorizedClient, UserSessionModel tokenUserSession, String errorCode, String reason)
Definition: AbstractIdentityProvider.java:104

◆ exchangeUnsupportedRequiredType()

Response org.keycloak.broker.provider.AbstractIdentityProvider< C extends IdentityProviderModel >.exchangeUnsupportedRequiredType ( )
inlineinherited
139  {
140  Map<String, String> error = new HashMap<>();
141  error.put("error", "invalid_target");
142  error.put("error_description", "response_token_type_unsupported");
143  return Response.status(400).entity(error).type(MediaType.APPLICATION_JSON_TYPE).build();
144  }

◆ export() [1/2]

Response org.keycloak.broker.provider.AbstractIdentityProvider< C extends IdentityProviderModel >.export ( UriInfo  uriInfo,
RealmModel  realm,
String  format 
)
inlineinherited
60  {
61  return Response.noContent().build();
62  }

◆ export() [2/2]

Response org.keycloak.broker.provider.IdentityProvider< C extends IdentityProviderModel >.export ( UriInfo  uriInfo,
RealmModel  realm,
String  format 
)
inherited

Export a representation of the IdentityProvider in a specific format. For example, a SAML EntityDescriptor

戻り値

◆ getConfig()

55  {
56  return this.config;
57  }
final C config
Definition: AbstractIdentityProvider.java:48

◆ getLinkingUrl()

String org.keycloak.broker.provider.AbstractIdentityProvider< C extends IdentityProviderModel >.getLinkingUrl ( UriInfo  uriInfo,
ClientModel  authorizedClient,
UserSessionModel  tokenUserSession 
)
inlineprotectedinherited
113  {
114  String provider = getConfig().getAlias();
115  String clientId = authorizedClient.getClientId();
116  String nonce = UUID.randomUUID().toString();
117  MessageDigest md = null;
118  try {
119  md = MessageDigest.getInstance("SHA-256");
120  } catch (NoSuchAlgorithmException e) {
121  throw new RuntimeException(e);
122  }
123  String input = nonce + tokenUserSession.getId() + clientId + provider;
124  byte[] check = md.digest(input.getBytes(StandardCharsets.UTF_8));
125  String hash = Base64Url.encode(check);
126  return KeycloakUriBuilder.fromUri(uriInfo.getBaseUri())
127  .path("/realms/{realm}/broker/{provider}/link")
128  .queryParam("nonce", nonce)
129  .queryParam("hash", hash)
130  .queryParam("client_id", clientId)
131  .build(authorizedClient.getRealm().getName(), provider)
132  .toString();
133  }
C getConfig()
Definition: AbstractIdentityProvider.java:55

◆ getMarshaller() [1/2]

IdentityProviderDataMarshaller org.keycloak.broker.provider.IdentityProvider< C extends IdentityProviderModel >.getMarshaller ( )
inherited

Implementation of marshaller to serialize/deserialize attached data to Strings, which can be saved in clientSession

戻り値

◆ getMarshaller() [2/2]

IdentityProviderDataMarshaller org.keycloak.broker.provider.AbstractIdentityProvider< C extends IdentityProviderModel >.getMarshaller ( )
inlineinherited
167  {
168  return new DefaultDataMarshaller();
169  }

◆ importNewUser() [1/2]

void org.keycloak.broker.provider.IdentityProvider< C extends IdentityProviderModel >.importNewUser ( KeycloakSession  session,
RealmModel  realm,
UserModel  user,
BrokeredIdentityContext  context 
)
inherited

◆ importNewUser() [2/2]

void org.keycloak.broker.provider.AbstractIdentityProvider< C extends IdentityProviderModel >.importNewUser ( KeycloakSession  session,
RealmModel  realm,
UserModel  user,
BrokeredIdentityContext  context 
)
inlineinherited
157  {
158 
159  }

◆ keycloakInitiatedBrowserLogout() [1/2]

Response org.keycloak.broker.provider.AbstractIdentityProvider< C extends IdentityProviderModel >.keycloakInitiatedBrowserLogout ( KeycloakSession  session,
UserSessionModel  userSession,
UriInfo  uriInfo,
RealmModel  realm 
)
inlineinherited
80  {
81  return null;
82  }

◆ keycloakInitiatedBrowserLogout() [2/2]

Response org.keycloak.broker.provider.IdentityProvider< C extends IdentityProviderModel >.keycloakInitiatedBrowserLogout ( KeycloakSession  session,
UserSessionModel  userSession,
UriInfo  uriInfo,
RealmModel  realm 
)
inherited

Called when a Keycloak application initiates a logout through the browser. This is expected to do a logout with the IDP

引数
userSession
uriInfo
realm
戻り値
null if this is not supported by this provider

◆ performLogin()

Response org.keycloak.social.twitter.TwitterIdentityProvider.performLogin ( AuthenticationRequest  request)
inline

org.keycloak.broker.provider.IdentityProvider< C extends IdentityProviderModel >を実装しています。

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
C getConfig()
Definition: AbstractIdentityProvider.java:55

◆ preprocessFederatedIdentity() [1/2]

void org.keycloak.broker.provider.IdentityProvider< C extends IdentityProviderModel >.preprocessFederatedIdentity ( KeycloakSession  session,
RealmModel  realm,
BrokeredIdentityContext  context 
)
inherited

◆ preprocessFederatedIdentity() [2/2]

void org.keycloak.broker.provider.AbstractIdentityProvider< C extends IdentityProviderModel >.preprocessFederatedIdentity ( KeycloakSession  session,
RealmModel  realm,
BrokeredIdentityContext  context 
)
inlineinherited
152  {
153 
154  }

◆ retrieveToken()

Response org.keycloak.social.twitter.TwitterIdentityProvider.retrieveToken ( KeycloakSession  session,
FederatedIdentityModel  identity 
)
inline

org.keycloak.broker.provider.IdentityProvider< C extends IdentityProviderModel >を実装しています。

259  {
260  return Response.ok(identity.getToken()).type(MediaType.APPLICATION_JSON).build();
261  }

◆ updateBrokeredUser() [1/2]

void org.keycloak.broker.provider.IdentityProvider< C extends IdentityProviderModel >.updateBrokeredUser ( KeycloakSession  session,
RealmModel  realm,
UserModel  user,
BrokeredIdentityContext  context 
)
inherited

◆ updateBrokeredUser() [2/2]

void org.keycloak.broker.provider.AbstractIdentityProvider< C extends IdentityProviderModel >.updateBrokeredUser ( KeycloakSession  session,
RealmModel  realm,
UserModel  user,
BrokeredIdentityContext  context 
)
inlineinherited
162  {
163 
164  }

メンバ詳解

◆ ACCOUNT_LINK_URL

final String org.keycloak.broker.provider.AbstractIdentityProvider< C extends IdentityProviderModel >.ACCOUNT_LINK_URL = "account-link-url"
staticinherited

◆ EXTERNAL_IDENTITY_PROVIDER [1/2]

String org.keycloak.broker.provider.IdentityProvider< C extends IdentityProviderModel >.EXTERNAL_IDENTITY_PROVIDER = "EXTERNAL_IDENTITY_PROVIDER"
inherited

◆ EXTERNAL_IDENTITY_PROVIDER [2/2]

String org.keycloak.broker.provider.IdentityProvider< C extends IdentityProviderModel >.EXTERNAL_IDENTITY_PROVIDER
inherited

◆ FEDERATED_ACCESS_TOKEN [1/2]

String org.keycloak.broker.provider.IdentityProvider< C extends IdentityProviderModel >.FEDERATED_ACCESS_TOKEN
inherited

◆ FEDERATED_ACCESS_TOKEN [2/2]

String org.keycloak.broker.provider.IdentityProvider< C extends IdentityProviderModel >.FEDERATED_ACCESS_TOKEN = "FEDERATED_ACCESS_TOKEN"
inherited

◆ logger

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

◆ session

◆ 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

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