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

公開メンバ関数

 QueryParamterTokenRequestAuthenticator (KeycloakDeployment deployment)
 
AuthOutcome authenticate (HttpFacade exchange)
 
AuthChallenge getChallenge ()
 
String getTokenString ()
 
AccessToken getToken ()
 
String getSurrogate ()
 

静的公開変数類

static final String ACCESS_TOKEN = "access_token"
 

限定公開メンバ関数

AuthOutcome authenticateToken (HttpFacade exchange, String tokenString)
 
AuthChallenge clientCertChallenge ()
 
AuthChallenge challengeResponse (HttpFacade facade, final OIDCAuthenticationError.Reason reason, final String error, final String description)
 

限定公開変数類

Logger log = Logger.getLogger(QueryParamterTokenRequestAuthenticator.class)
 
String tokenString
 
AccessToken token
 
String surrogate
 
AuthChallenge challenge
 
KeycloakDeployment deployment
 

関数

String getAccessTokenFromQueryParamter (HttpFacade exchange)
 

詳解

著者
Christian Froehlich
Brad Culley
John D. Ament
バージョン
Revision
1

構築子と解体子

◆ QueryParamterTokenRequestAuthenticator()

org.keycloak.adapters.QueryParamterTokenRequestAuthenticator.QueryParamterTokenRequestAuthenticator ( KeycloakDeployment  deployment)
inline
33  {
34  super(deployment);
35  }
KeycloakDeployment deployment
Definition: BearerTokenRequestAuthenticator.java:42

関数詳解

◆ authenticate()

AuthOutcome org.keycloak.adapters.QueryParamterTokenRequestAuthenticator.authenticate ( HttpFacade  exchange)
inline
37  {
39  return AuthOutcome.NOT_ATTEMPTED;
40  }
41  tokenString = null;
43  if (tokenString == null || tokenString.trim().isEmpty()) {
44  challenge = challengeResponse(exchange, OIDCAuthenticationError.Reason.NO_QUERY_PARAMETER_ACCESS_TOKEN, null, null);
45  return AuthOutcome.NOT_ATTEMPTED;
46  }
47  return (authenticateToken(exchange, tokenString));
48  }
AuthChallenge challengeResponse(HttpFacade facade, final OIDCAuthenticationError.Reason reason, final String error, final String description)
Definition: BearerTokenRequestAuthenticator.java:159
boolean isOAuthQueryParameterEnabled()
Definition: KeycloakDeployment.java:461
AuthChallenge challenge
Definition: BearerTokenRequestAuthenticator.java:41
String tokenString
Definition: BearerTokenRequestAuthenticator.java:38
String getAccessTokenFromQueryParamter(HttpFacade exchange)
Definition: QueryParamterTokenRequestAuthenticator.java:50
KeycloakDeployment deployment
Definition: BearerTokenRequestAuthenticator.java:42
AuthOutcome authenticateToken(HttpFacade exchange, String tokenString)
Definition: BearerTokenRequestAuthenticator.java:87

◆ authenticateToken()

AuthOutcome org.keycloak.adapters.BearerTokenRequestAuthenticator.authenticateToken ( HttpFacade  exchange,
String  tokenString 
)
inlineprotectedinherited
87  {
88  log.debug("Verifying access_token");
89  if (log.isTraceEnabled()) {
90  try {
91  JWSInput jwsInput = new JWSInput(tokenString);
92  String wireString = jwsInput.getWireString();
93  log.tracef("\taccess_token: %s", wireString.substring(0, wireString.lastIndexOf(".")) + ".signature");
94  } catch (JWSInputException e) {
95  log.errorf(e, "Failed to parse access_token: %s", tokenString);
96  }
97  }
98  try {
99  token = AdapterRSATokenVerifier.verifyToken(tokenString, deployment);
100  } catch (VerificationException e) {
101  log.error("Failed to verify token", e);
102  challenge = challengeResponse(exchange, OIDCAuthenticationError.Reason.INVALID_TOKEN, "invalid_token", e.getMessage());
103  return AuthOutcome.FAILED;
104  }
106  log.error("Stale token");
107  challenge = challengeResponse(exchange, OIDCAuthenticationError.Reason.STALE_TOKEN, "invalid_token", "Stale token");
108  return AuthOutcome.FAILED;
109  }
110  boolean verifyCaller = false;
113  } else {
114  verifyCaller = token.isVerifyCaller();
115  }
116  surrogate = null;
117  if (verifyCaller) {
118  if (token.getTrustedCertificates() == null || token.getTrustedCertificates().size() == 0) {
119  log.warn("No trusted certificates in token");
121  return AuthOutcome.FAILED;
122  }
123 
124  // for now, we just make sure Undertow did two-way SSL
125  // assume JBoss Web verifies the client cert
126  X509Certificate[] chain = new X509Certificate[0];
127  try {
128  chain = exchange.getCertificateChain();
129  } catch (Exception ignore) {
130 
131  }
132  if (chain == null || chain.length == 0) {
133  log.warn("No certificates provided by undertow to verify the caller");
135  return AuthOutcome.FAILED;
136  }
137  surrogate = chain[0].getSubjectDN().getName();
138  }
139  log.debug("successful authorized");
140  return AuthOutcome.AUTHENTICATED;
141  }
AuthChallenge challengeResponse(HttpFacade facade, final OIDCAuthenticationError.Reason reason, final String error, final String description)
Definition: BearerTokenRequestAuthenticator.java:159
AuthChallenge clientCertChallenge()
Definition: BearerTokenRequestAuthenticator.java:143
String getResourceName()
Definition: KeycloakDeployment.java:107
AuthChallenge challenge
Definition: BearerTokenRequestAuthenticator.java:41
String tokenString
Definition: BearerTokenRequestAuthenticator.java:38
KeycloakDeployment deployment
Definition: BearerTokenRequestAuthenticator.java:42
Set< String > getTrustedCertificates()
Definition: AccessToken.java:237
boolean isVerifyCaller()
Definition: AccessToken.java:153
AccessToken token
Definition: BearerTokenRequestAuthenticator.java:39
boolean isUseResourceRoleMappings()
Definition: KeycloakDeployment.java:307
int getNotBefore()
Definition: KeycloakDeployment.java:363
String surrogate
Definition: BearerTokenRequestAuthenticator.java:40
Logger log
Definition: BearerTokenRequestAuthenticator.java:37
int getIssuedAt()
Definition: JsonWebToken.java:114

◆ challengeResponse()

AuthChallenge org.keycloak.adapters.BearerTokenRequestAuthenticator.challengeResponse ( HttpFacade  facade,
final OIDCAuthenticationError.Reason  reason,
final String  error,
final String  description 
)
inlineprotectedinherited
159  {
160  StringBuilder header = new StringBuilder("Bearer realm=\"");
161  header.append(deployment.getRealm()).append("\"");
162  if (error != null) {
163  header.append(", error=\"").append(error).append("\"");
164  }
165  if (description != null) {
166  header.append(", error_description=\"").append(description).append("\"");
167  }
168  final String challenge = header.toString();
169  return new AuthChallenge() {
170  @Override
171  public int getResponseCode() {
172  return 401;
173  }
174 
175  @Override
176  public boolean challenge(HttpFacade facade) {
177  if (deployment.getPolicyEnforcer() != null) {
178  deployment.getPolicyEnforcer().enforce(OIDCHttpFacade.class.cast(facade));
179  return true;
180  }
181  OIDCAuthenticationError error = new OIDCAuthenticationError(reason, description);
182  facade.getRequest().setError(error);
183  facade.getResponse().addHeader("WWW-Authenticate", challenge);
185  facade.getResponse().setStatus(401);
186  }
187  else {
188  facade.getResponse().sendError(401);
189  }
190  return true;
191  }
192  };
193  }
String getRealm()
Definition: KeycloakDeployment.java:111
AuthorizationContext enforce(OIDCHttpFacade facade)
Definition: PolicyEnforcer.java:91
AuthChallenge challenge
Definition: BearerTokenRequestAuthenticator.java:41
PolicyEnforcer getPolicyEnforcer()
Definition: KeycloakDeployment.java:444
KeycloakDeployment deployment
Definition: BearerTokenRequestAuthenticator.java:42
boolean isDelegateBearerErrorResponseSending()
Definition: KeycloakDeployment.java:473

◆ clientCertChallenge()

AuthChallenge org.keycloak.adapters.BearerTokenRequestAuthenticator.clientCertChallenge ( )
inlineprotectedinherited
143  {
144  return new AuthChallenge() {
145  @Override
146  public int getResponseCode() {
147  return 0;
148  }
149 
150  @Override
151  public boolean challenge(HttpFacade exchange) {
152  // do the same thing as client cert auth
153  return false;
154  }
155  };
156  }
AuthChallenge challenge
Definition: BearerTokenRequestAuthenticator.java:41

◆ getAccessTokenFromQueryParamter()

String org.keycloak.adapters.QueryParamterTokenRequestAuthenticator.getAccessTokenFromQueryParamter ( HttpFacade  exchange)
inlinepackage
50  {
51  try {
52  if (exchange != null && exchange.getRequest() != null) {
53  return exchange.getRequest().getQueryParamValue(ACCESS_TOKEN);
54  }
55  } catch (Exception ignore) {
56  }
57  return null;
58  }
static final String ACCESS_TOKEN
Definition: QueryParamterTokenRequestAuthenticator.java:30

◆ getChallenge()

AuthChallenge org.keycloak.adapters.BearerTokenRequestAuthenticator.getChallenge ( )
inlineinherited
48  {
49  return challenge;
50  }
AuthChallenge challenge
Definition: BearerTokenRequestAuthenticator.java:41

◆ getSurrogate()

String org.keycloak.adapters.BearerTokenRequestAuthenticator.getSurrogate ( )
inlineinherited
60  {
61  return surrogate;
62  }
String surrogate
Definition: BearerTokenRequestAuthenticator.java:40

◆ getToken()

AccessToken org.keycloak.adapters.BearerTokenRequestAuthenticator.getToken ( )
inlineinherited
56  {
57  return token;
58  }
AccessToken token
Definition: BearerTokenRequestAuthenticator.java:39

◆ getTokenString()

String org.keycloak.adapters.BearerTokenRequestAuthenticator.getTokenString ( )
inlineinherited
52  {
53  return tokenString;
54  }
String tokenString
Definition: BearerTokenRequestAuthenticator.java:38

メンバ詳解

◆ ACCESS_TOKEN

final String org.keycloak.adapters.QueryParamterTokenRequestAuthenticator.ACCESS_TOKEN = "access_token"
static

◆ challenge

AuthChallenge org.keycloak.adapters.BearerTokenRequestAuthenticator.challenge
protectedinherited

◆ deployment

KeycloakDeployment org.keycloak.adapters.BearerTokenRequestAuthenticator.deployment
protectedinherited

◆ log

Logger org.keycloak.adapters.QueryParamterTokenRequestAuthenticator.log = Logger.getLogger(QueryParamterTokenRequestAuthenticator.class)
protected

◆ surrogate

String org.keycloak.adapters.BearerTokenRequestAuthenticator.surrogate
protectedinherited

◆ token

AccessToken org.keycloak.adapters.BearerTokenRequestAuthenticator.token
protectedinherited

◆ tokenString

String org.keycloak.adapters.BearerTokenRequestAuthenticator.tokenString
protectedinherited

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