keycloak-service
公開メンバ関数 | 非公開メンバ関数 | 非公開変数類 | 静的非公開変数類 | 全メンバ一覧
org.keycloak.protocol.oidc.endpoints.TokenIntrospectionEndpoint クラス
org.keycloak.protocol.oidc.endpoints.TokenIntrospectionEndpoint 連携図
Collaboration graph

公開メンバ関数

 TokenIntrospectionEndpoint (RealmModel realm, EventBuilder event)
 
Response introspect ()
 

非公開メンバ関数

void authorizeClient ()
 
void checkSsl ()
 
void checkRealm ()
 
ErrorResponseException throwErrorResponseException (String error, String detail, Status status)
 

非公開変数類

KeycloakSession session
 
HttpRequest request
 
HttpHeaders headers
 
ClientConnection clientConnection
 
final RealmModel realm
 
final EventBuilder event
 

静的非公開変数類

static final String PARAM_TOKEN_TYPE_HINT = "token_type_hint"
 
static final String PARAM_TOKEN = "token"
 

詳解

A token introspection endpoint based on RFC-7662.

著者
Pedro Igor

構築子と解体子

◆ TokenIntrospectionEndpoint()

org.keycloak.protocol.oidc.endpoints.TokenIntrospectionEndpoint.TokenIntrospectionEndpoint ( RealmModel  realm,
EventBuilder  event 
)
inline
65  {
66  this.realm = realm;
67  this.event = event;
68  }
final RealmModel realm
Definition: TokenIntrospectionEndpoint.java:62
final EventBuilder event
Definition: TokenIntrospectionEndpoint.java:63

関数詳解

◆ authorizeClient()

void org.keycloak.protocol.oidc.endpoints.TokenIntrospectionEndpoint.authorizeClient ( )
inlineprivate
112  {
113  try {
114  ClientModel client = AuthorizeClientUtil.authorizeClient(session, event).getClient();
115 
116  this.event.client(client);
117 
118  if (client == null || client.isPublicClient()) {
119  throw throwErrorResponseException(Errors.INVALID_REQUEST, "Client not allowed.", Status.FORBIDDEN);
120  }
121 
122  } catch (ErrorResponseException ere) {
123  throw ere;
124  } catch (Exception e) {
125  throw throwErrorResponseException(Errors.INVALID_REQUEST, "Authentication failed.", Status.UNAUTHORIZED);
126  }
127  }
final EventBuilder event
Definition: TokenIntrospectionEndpoint.java:63
ErrorResponseException throwErrorResponseException(String error, String detail, Status status)
Definition: TokenIntrospectionEndpoint.java:141
KeycloakSession session
Definition: TokenIntrospectionEndpoint.java:52

◆ checkRealm()

void org.keycloak.protocol.oidc.endpoints.TokenIntrospectionEndpoint.checkRealm ( )
inlineprivate
135  {
136  if (!realm.isEnabled()) {
137  throw new ErrorResponseException("access_denied", "Realm not enabled", Status.FORBIDDEN);
138  }
139  }
final RealmModel realm
Definition: TokenIntrospectionEndpoint.java:62

◆ checkSsl()

void org.keycloak.protocol.oidc.endpoints.TokenIntrospectionEndpoint.checkSsl ( )
inlineprivate
129  {
130  if (!session.getContext().getUri().getBaseUri().getScheme().equals("https") && realm.getSslRequired().isRequired(clientConnection)) {
131  throw new ErrorResponseException("invalid_request", "HTTPS required", Status.FORBIDDEN);
132  }
133  }
ClientConnection clientConnection
Definition: TokenIntrospectionEndpoint.java:60
final RealmModel realm
Definition: TokenIntrospectionEndpoint.java:62
KeycloakSession session
Definition: TokenIntrospectionEndpoint.java:52

◆ introspect()

Response org.keycloak.protocol.oidc.endpoints.TokenIntrospectionEndpoint.introspect ( )
inline
72  {
73  event.event(EventType.INTROSPECT_TOKEN);
74 
75  checkSsl();
76  checkRealm();
78 
79  MultivaluedMap<String, String> formParams = request.getDecodedFormParameters();
80  String tokenTypeHint = formParams.getFirst(PARAM_TOKEN_TYPE_HINT);
81 
82  if (tokenTypeHint == null) {
83  tokenTypeHint = AccessTokenIntrospectionProviderFactory.ACCESS_TOKEN_TYPE;
84  }
85 
86  String token = formParams.getFirst(PARAM_TOKEN);
87 
88  if (token == null) {
89  throw throwErrorResponseException(Errors.INVALID_REQUEST, "Token not provided.", Status.BAD_REQUEST);
90  }
91 
92  TokenIntrospectionProvider provider = this.session.getProvider(TokenIntrospectionProvider.class, tokenTypeHint);
93 
94  if (provider == null) {
95  throw throwErrorResponseException(Errors.INVALID_REQUEST, "Unsupported token type [" + tokenTypeHint + "].", Status.BAD_REQUEST);
96  }
97 
98  try {
99 
100  Response response = provider.introspect(token);
101 
102  this.event.success();
103 
104  return response;
105  } catch (ErrorResponseException ere) {
106  throw ere;
107  } catch (Exception e) {
108  throw throwErrorResponseException(Errors.INVALID_REQUEST, "Failed to introspect token.", Status.BAD_REQUEST);
109  }
110  }
void checkRealm()
Definition: TokenIntrospectionEndpoint.java:135
static final String PARAM_TOKEN
Definition: TokenIntrospectionEndpoint.java:49
void checkSsl()
Definition: TokenIntrospectionEndpoint.java:129
ErrorResponseException throwErrorResponseException(String error, String detail, Status status)
Definition: TokenIntrospectionEndpoint.java:141
static final String PARAM_TOKEN_TYPE_HINT
Definition: TokenIntrospectionEndpoint.java:48
HttpRequest request
Definition: TokenIntrospectionEndpoint.java:54
KeycloakSession session
Definition: TokenIntrospectionEndpoint.java:52
void authorizeClient()
Definition: TokenIntrospectionEndpoint.java:112

◆ throwErrorResponseException()

ErrorResponseException org.keycloak.protocol.oidc.endpoints.TokenIntrospectionEndpoint.throwErrorResponseException ( String  error,
String  detail,
Status  status 
)
inlineprivate
141  {
142  this.event.detail("detail", detail).error(error);
143  return new ErrorResponseException(error, detail, status);
144  }

メンバ詳解

◆ clientConnection

ClientConnection org.keycloak.protocol.oidc.endpoints.TokenIntrospectionEndpoint.clientConnection
private

◆ event

final EventBuilder org.keycloak.protocol.oidc.endpoints.TokenIntrospectionEndpoint.event
private

◆ headers

HttpHeaders org.keycloak.protocol.oidc.endpoints.TokenIntrospectionEndpoint.headers
private

◆ PARAM_TOKEN

final String org.keycloak.protocol.oidc.endpoints.TokenIntrospectionEndpoint.PARAM_TOKEN = "token"
staticprivate

◆ PARAM_TOKEN_TYPE_HINT

final String org.keycloak.protocol.oidc.endpoints.TokenIntrospectionEndpoint.PARAM_TOKEN_TYPE_HINT = "token_type_hint"
staticprivate

◆ realm

final RealmModel org.keycloak.protocol.oidc.endpoints.TokenIntrospectionEndpoint.realm
private

◆ request

HttpRequest org.keycloak.protocol.oidc.endpoints.TokenIntrospectionEndpoint.request
private

◆ session

KeycloakSession org.keycloak.protocol.oidc.endpoints.TokenIntrospectionEndpoint.session
private

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