gluu
公開メンバ関数 | 静的公開メンバ関数 | 限定公開メンバ関数 | 限定公開変数類 | 非公開変数類 | 全メンバ一覧
org.xdi.oxauth.client.UserInfoClient クラス
org.xdi.oxauth.client.UserInfoClient の継承関係図
Inheritance graph
org.xdi.oxauth.client.UserInfoClient 連携図
Collaboration graph

公開メンバ関数

 UserInfoClient (String url)
 
String getHttpMethod ()
 
UserInfoResponse execUserInfo (String accessToken)
 
UserInfoResponse exec ()
 
void setSharedKey (String sharedKey)
 
void setPrivateKey (PrivateKey privateKey)
 
String getJwksUri ()
 
void setJwksUri (String jwksUri)
 
String getUrl ()
 
void setUrl (String url)
 
getRequest ()
 
void setRequest (T request)
 
getResponse ()
 
void setResponse (V response)
 
ClientExecutor getExecutor ()
 
void setExecutor (ClientExecutor executor)
 
String getRequestAsString ()
 
String getResponseAsString ()
 
void closeConnection ()
 
List< Cookie > getCookies ()
 
Map< String, String > getHeaders ()
 

静的公開メンバ関数

static void putAllFormParameters (ClientRequest p_clientRequest, BaseRequest p_request)
 

限定公開メンバ関数

void addReqParam (String p_key, HasParamName p_value)
 
void addReqParam (String p_key, String p_value)
 
void initClientRequest ()
 

限定公開変数類

request
 
response
 
ClientRequest clientRequest
 
ClientResponse< String > clientResponse
 
ClientExecutor executor
 

非公開変数類

String sharedKey
 
PrivateKey privateKey
 
String jwksUri
 

詳解

Encapsulates functionality to make user info request calls to an authorization server via REST Services.

著者
Javier Rojas Blum
バージョン
December 26, 2016

構築子と解体子

◆ UserInfoClient()

org.xdi.oxauth.client.UserInfoClient.UserInfoClient ( String  url)
inline

Constructs an User Info client by providing a REST url where the service is located.

引数
urlThe REST Service location.
45  {
46  super(url);
47  }

関数詳解

◆ addReqParam() [1/2]

void org.xdi.oxauth.client.BaseClient< T extends BaseRequest, V extends BaseResponse >.addReqParam ( String  p_key,
HasParamName  p_value 
)
inlineprotectedinherited
88  {
89  if (p_value != null) {
90  addReqParam(p_key, p_value.getParamName());
91  }
92  }
void addReqParam(String p_key, HasParamName p_value)
Definition: BaseClient.java:88

◆ addReqParam() [2/2]

void org.xdi.oxauth.client.BaseClient< T extends BaseRequest, V extends BaseResponse >.addReqParam ( String  p_key,
String  p_value 
)
inlineprotectedinherited
94  {
95  if (Util.allNotBlank(p_key, p_value)) {
96  if (request.getAuthorizationMethod() == AuthorizationMethod.FORM_ENCODED_BODY_PARAMETER) {
97  clientRequest.formParameter(p_key, p_value);
98  } else {
99  clientRequest.queryParameter(p_key, p_value);
100  }
101  }
102  }
ClientRequest clientRequest
Definition: BaseClient.java:42

◆ closeConnection()

void org.xdi.oxauth.client.BaseClient< T extends BaseRequest, V extends BaseResponse >.closeConnection ( )
inlineinherited
239  {
240  try {
241  if (clientResponse != null) {
242  clientResponse.releaseConnection();
243  }
244  if (clientRequest != null && clientRequest.getExecutor() != null) {
245  clientRequest.getExecutor().close();
246  }
247  } catch (Exception e) {
248  LOG.error(e.getMessage(), e);
249  }
250  }
static final Logger LOG
Definition: BaseClient.java:36
ClientResponse< String > clientResponse
Definition: BaseClient.java:43
ClientRequest clientRequest
Definition: BaseClient.java:42

◆ exec()

UserInfoResponse org.xdi.oxauth.client.UserInfoClient.exec ( )
inline

Executes the call to the REST Service and processes the response.

戻り値
The service response.
77  {
78  // Prepare request parameters
80  clientRequest.header("Content-Type", MediaType.APPLICATION_FORM_URLENCODED);
81  clientRequest.setHttpMethod(getHttpMethod());
82 
83  if (getRequest().getAuthorizationMethod() == null
84  || getRequest().getAuthorizationMethod() == AuthorizationMethod.AUTHORIZATION_REQUEST_HEADER_FIELD) {
85  if (StringUtils.isNotBlank(getRequest().getAccessToken())) {
86  clientRequest.header("Authorization", "Bearer " + getRequest().getAccessToken());
87  }
88  } else if (getRequest().getAuthorizationMethod() == AuthorizationMethod.FORM_ENCODED_BODY_PARAMETER) {
89  if (StringUtils.isNotBlank(getRequest().getAccessToken())) {
90  clientRequest.formParameter("access_token", getRequest().getAccessToken());
91  }
92  } else if (getRequest().getAuthorizationMethod() == AuthorizationMethod.URL_QUERY_PARAMETER) {
93  if (StringUtils.isNotBlank(getRequest().getAccessToken())) {
94  clientRequest.queryParameter("access_token", getRequest().getAccessToken());
95  }
96  }
97 
98  // Call REST Service and handle response
99  try {
100  if (getRequest().getAuthorizationMethod() == null
101  || getRequest().getAuthorizationMethod() == AuthorizationMethod.AUTHORIZATION_REQUEST_HEADER_FIELD
102  || getRequest().getAuthorizationMethod() == AuthorizationMethod.URL_QUERY_PARAMETER) {
103  clientResponse = clientRequest.get(String.class);
104  } else if (getRequest().getAuthorizationMethod() == AuthorizationMethod.FORM_ENCODED_BODY_PARAMETER) {
105  clientResponse = clientRequest.post(String.class);
106  }
107 
108  int status = clientResponse.getStatus();
109 
110  setResponse(new UserInfoResponse(status));
111 
112  String entity = clientResponse.getEntity(String.class);
113  getResponse().setEntity(entity);
114  getResponse().setHeaders(clientResponse.getMetadata());
115  if (StringUtils.isNotBlank(entity)) {
116  List<Object> contentType = clientResponse.getHeaders().get("Content-Type");
117  if (contentType != null && contentType.contains("application/jwt")) {
118  String[] jwtParts = entity.split("\\.");
119  if (jwtParts.length == 5) {
120  byte[] sharedSymmetricKey = sharedKey != null ? sharedKey.getBytes(Util.UTF8_STRING_ENCODING) : null;
121  Jwe jwe = Jwe.parse(entity, privateKey, sharedSymmetricKey);
122  getResponse().setClaims(jwe.getClaims().toMap());
123  } else {
124  Jwt jwt = Jwt.parse(entity);
125 
126  OxAuthCryptoProvider cryptoProvider = new OxAuthCryptoProvider();
127  boolean signatureVerified = cryptoProvider.verifySignature(
128  jwt.getSigningInput(),
129  jwt.getEncodedSignature(),
130  jwt.getHeader().getKeyId(),
131  JwtUtil.getJSONWebKeys(jwksUri),
132  sharedKey,
133  jwt.getHeader().getAlgorithm());
134 
135  if (signatureVerified) {
136  getResponse().setClaims(jwt.getClaims().toMap());
137  }
138  }
139  } else {
140  try {
141  JSONObject jsonObj = new JSONObject(entity);
142 
143  if (jsonObj.has("error")) {
144  getResponse().setErrorType(UserInfoErrorResponseType.fromString(jsonObj.getString("error")));
145  jsonObj.remove("error");
146  }
147  if (jsonObj.has("error_description")) {
148  getResponse().setErrorDescription(jsonObj.getString("error_description"));
149  jsonObj.remove("error_description");
150  }
151  if (jsonObj.has("error_uri")) {
152  getResponse().setErrorUri(jsonObj.getString("error_uri"));
153  jsonObj.remove("error_uri");
154  }
155 
156  for (Iterator<String> iterator = jsonObj.keys(); iterator.hasNext(); ) {
157  String key = iterator.next();
158  List<String> values = new ArrayList<String>();
159 
160  JSONArray jsonArray = jsonObj.optJSONArray(key);
161  if (jsonArray != null) {
162  for (int i = 0; i < jsonArray.length(); i++) {
163  String value = jsonArray.optString(i);
164  if (value != null) {
165  values.add(value);
166  }
167  }
168  } else {
169  String value = jsonObj.optString(key);
170  if (value != null) {
171  values.add(value);
172  }
173  }
174 
175  getResponse().getClaims().put(key, values);
176  }
177  } catch (JSONException e) {
178  e.printStackTrace();
179  }
180  }
181  }
182  } catch (Exception e) {
183  e.printStackTrace();
184  } finally {
185  closeConnection();
186  }
187 
188  return getResponse();
189  }
String getHttpMethod()
Definition: UserInfoClient.java:50
String sharedKey
Definition: UserInfoClient.java:36
ClientResponse< String > clientResponse
Definition: BaseClient.java:43
ClientRequest clientRequest
Definition: BaseClient.java:42
void setResponse(V response)
Definition: BaseClient.java:76
String jwksUri
Definition: UserInfoClient.java:38
PrivateKey privateKey
Definition: UserInfoClient.java:37

◆ execUserInfo()

UserInfoResponse org.xdi.oxauth.client.UserInfoClient.execUserInfo ( String  accessToken)
inline

Executes the call to the REST Service and processes the response.

引数
accessTokenThe access token obtained from the oxAuth authorization request.
戻り値
The service response.
66  {
67  setRequest(new UserInfoRequest(accessToken));
68 
69  return exec();
70  }
UserInfoResponse exec()
Definition: UserInfoClient.java:77
void setRequest(T request)
Definition: BaseClient.java:68

◆ getCookies()

List<Cookie> org.xdi.oxauth.client.BaseClient< T extends BaseRequest, V extends BaseResponse >.getCookies ( )
inlineinherited
254  {
255  return cookies;
256  }
final List< Cookie > cookies
Definition: BaseClient.java:44

◆ getExecutor()

ClientExecutor org.xdi.oxauth.client.BaseClient< T extends BaseRequest, V extends BaseResponse >.getExecutor ( )
inlineinherited
80  {
81  return executor;
82  }
ClientExecutor executor
Definition: BaseClient.java:47

◆ getHeaders()

Map<String, String> org.xdi.oxauth.client.BaseClient< T extends BaseRequest, V extends BaseResponse >.getHeaders ( )
inlineinherited
258  {
259  return headers;
260  }
final Map< String, String > headers
Definition: BaseClient.java:45

◆ getHttpMethod()

String org.xdi.oxauth.client.UserInfoClient.getHttpMethod ( )
inline
50  {
51  if (request.getAuthorizationMethod() == null
52  || request.getAuthorizationMethod() == AuthorizationMethod.AUTHORIZATION_REQUEST_HEADER_FIELD
53  || request.getAuthorizationMethod() == AuthorizationMethod.URL_QUERY_PARAMETER) {
54  return HttpMethod.GET;
55  } else /*if (request.getAuthorizationMethod() == AuthorizationMethod.FORM_ENCODED_BODY_PARAMETER)*/ {
56  return HttpMethod.POST;
57  }
58  }

◆ getJwksUri()

String org.xdi.oxauth.client.UserInfoClient.getJwksUri ( )
inline
199  {
200  return jwksUri;
201  }
String jwksUri
Definition: UserInfoClient.java:38

◆ getRequest()

T org.xdi.oxauth.client.BaseClient< T extends BaseRequest, V extends BaseResponse >.getRequest ( )
inlineinherited
64  {
65  return request;
66  }

◆ getRequestAsString()

String org.xdi.oxauth.client.BaseClient< T extends BaseRequest, V extends BaseResponse >.getRequestAsString ( )
inlineinherited
115  {
116  StringBuilder sb = new StringBuilder();
117 
118  try {
119  URL theUrl = new URL(url);
120 
121  if (getHttpMethod().equals(HttpMethod.POST)) {
122  sb.append(HttpMethod.POST).append(" ").append(theUrl.getPath()).append(" HTTP/1.1");
123  if (StringUtils.isNotBlank(request.getContentType())) {
124  sb.append("\n");
125  sb.append("Content-Type: ").append(request.getContentType());
126  }
127  if (StringUtils.isNotBlank(request.getMediaType())) {
128  sb.append("\n");
129  sb.append("Accept: ").append(request.getMediaType());
130  }
131  sb.append("\n");
132  sb.append("Host: ").append(theUrl.getHost());
133 
134  if (request instanceof AuthorizationRequest) {
135  AuthorizationRequest authorizationRequest = (AuthorizationRequest) request;
136  if (authorizationRequest.isUseNoRedirectHeader()) {
137  sb.append("\n");
138  sb.append("X-Gluu-NoRedirect: true");
139  }
140  }
141  if (request.getAuthorizationMethod() == null) {
142  if (request.getAuthenticationMethod() == null
143  || request.getAuthenticationMethod() == AuthenticationMethod.CLIENT_SECRET_BASIC) {
144  if (request.hasCredentials()) {
145  String encodedCredentials = request.getEncodedCredentials();
146  sb.append("\n");
147  sb.append("Authorization: Basic ").append(encodedCredentials);
148  }
149  }
150  } else if (request.getAuthorizationMethod() == AuthorizationMethod.AUTHORIZATION_REQUEST_HEADER_FIELD) {
151  if (request instanceof UserInfoRequest) {
152  String accessToken = ((UserInfoRequest) request).getAccessToken();
153  sb.append("\n");
154  sb.append("Authorization: Bearer ").append(accessToken);
155  }
156  }
157 
158  sb.append("\n");
159  sb.append("\n");
160  sb.append(request.getQueryString());
161  } else if (getHttpMethod().equals(HttpMethod.GET)) {
162  sb.append("GET ").append(theUrl.getPath());
163  if (StringUtils.isNotBlank(request.getQueryString())) {
164  sb.append("?").append(request.getQueryString());
165  }
166  sb.append(" HTTP/1.1");
167  sb.append("\n");
168  sb.append("Host: ").append(theUrl.getHost());
169 
170  if (request instanceof AuthorizationRequest) {
171  AuthorizationRequest authorizationRequest = (AuthorizationRequest) request;
172  if (authorizationRequest.isUseNoRedirectHeader()) {
173  sb.append("\n");
174  sb.append("X-Gluu-NoRedirect: true");
175  }
176  }
177  if (request.getAuthorizationMethod() == null) {
178  if (request.hasCredentials()) {
179  String encodedCredentials = request.getEncodedCredentials();
180  sb.append("\n");
181  sb.append("Authorization: Basic ").append(encodedCredentials);
182  } else if (request instanceof RegisterRequest) {
183  RegisterRequest r = (RegisterRequest) request;
184  String registrationAccessToken = r.getRegistrationAccessToken();
185  sb.append("\n");
186  sb.append("Authorization: Bearer ").append(registrationAccessToken);
187  }
188  } else if (request.getAuthorizationMethod() == AuthorizationMethod.AUTHORIZATION_REQUEST_HEADER_FIELD) {
189  if (request instanceof UserInfoRequest) {
190  String accessToken = ((UserInfoRequest) request).getAccessToken();
191  sb.append("\n");
192  sb.append("Authorization: Bearer ").append(accessToken);
193  }
194  }
195  }
196  } catch (MalformedURLException e) {
197  LOG.error(e.getMessage(), e);
198  }
199 
200  return sb.toString();
201  }
static final Logger LOG
Definition: BaseClient.java:36

◆ getResponse()

V org.xdi.oxauth.client.BaseClient< T extends BaseRequest, V extends BaseResponse >.getResponse ( )
inlineinherited
72  {
73  return response;
74  }

◆ getResponseAsString()

String org.xdi.oxauth.client.BaseClient< T extends BaseRequest, V extends BaseResponse >.getResponseAsString ( )
inlineinherited
203  {
204  StringBuilder sb = new StringBuilder();
205 
206  if (response != null) {
207  sb.append("HTTP/1.1 ").append(response.getStatus());
208  if (response.getHeaders() != null) {
209  for (String key : response.getHeaders().keySet()) {
210  sb.append("\n")
211  .append(key)
212  .append(": ")
213  .append(response.getHeaders().get(key).get(0));
214  }
215  }
216  if (response.getEntity() != null) {
217  sb.append("\n");
218  sb.append("\n");
219  sb.append(response.getEntity());
220  }
221  }
222  return sb.toString();
223  }

◆ getUrl()

String org.xdi.oxauth.client.BaseClient< T extends BaseRequest, V extends BaseResponse >.getUrl ( )
inlineinherited
56  {
57  return url;
58  }

◆ initClientRequest()

void org.xdi.oxauth.client.BaseClient< T extends BaseRequest, V extends BaseResponse >.initClientRequest ( )
inlineprotectedinherited
225  {
226  if (this.executor == null) {
227  this.clientRequest = new ClientRequest(getUrl());
228  } else {
229  this.clientRequest = new ClientRequest(getUrl(), this.executor);
230  }
231  for (Cookie cookie : cookies) {
232  clientRequest.cookie(cookie);
233  }
234  for (Map.Entry<String, String> headerEntry : headers.entrySet()) {
235  clientRequest.header(headerEntry.getKey(), headerEntry.getValue());
236  }
237  }
final List< Cookie > cookies
Definition: BaseClient.java:44
ClientExecutor executor
Definition: BaseClient.java:47
final Map< String, String > headers
Definition: BaseClient.java:45
ClientRequest clientRequest
Definition: BaseClient.java:42

◆ putAllFormParameters()

static void org.xdi.oxauth.client.BaseClient< T extends BaseRequest, V extends BaseResponse >.putAllFormParameters ( ClientRequest  p_clientRequest,
BaseRequest  p_request 
)
inlinestaticinherited
104  {
105  if (p_clientRequest != null && p_request != null) {
106  final Map<String, String> parameters = p_request.getParameters();
107  if (parameters != null && !parameters.isEmpty()) {
108  for (Map.Entry<String, String> e : parameters.entrySet()) {
109  p_clientRequest.formParameter(e.getKey(), e.getValue());
110  }
111  }
112  }
113  }

◆ setExecutor()

void org.xdi.oxauth.client.BaseClient< T extends BaseRequest, V extends BaseResponse >.setExecutor ( ClientExecutor  executor)
inlineinherited
84  {
85  this.executor = executor;
86  }
ClientExecutor executor
Definition: BaseClient.java:47

◆ setJwksUri()

void org.xdi.oxauth.client.UserInfoClient.setJwksUri ( String  jwksUri)
inline
203  {
204  this.jwksUri = jwksUri;
205  }
String jwksUri
Definition: UserInfoClient.java:38

◆ setPrivateKey()

void org.xdi.oxauth.client.UserInfoClient.setPrivateKey ( PrivateKey  privateKey)
inline
195  {
196  this.privateKey = privateKey;
197  }
PrivateKey privateKey
Definition: UserInfoClient.java:37

◆ setRequest()

void org.xdi.oxauth.client.BaseClient< T extends BaseRequest, V extends BaseResponse >.setRequest ( request)
inlineinherited
68  {
69  this.request = request;
70  }

◆ setResponse()

void org.xdi.oxauth.client.BaseClient< T extends BaseRequest, V extends BaseResponse >.setResponse ( response)
inlineinherited
76  {
77  this.response = response;
78  }

◆ setSharedKey()

void org.xdi.oxauth.client.UserInfoClient.setSharedKey ( String  sharedKey)
inline
191  {
192  this.sharedKey = sharedKey;
193  }
String sharedKey
Definition: UserInfoClient.java:36

◆ setUrl()

void org.xdi.oxauth.client.BaseClient< T extends BaseRequest, V extends BaseResponse >.setUrl ( String  url)
inlineinherited
60  {
61  this.url = url;
62  }

メンバ詳解

◆ clientRequest

ClientRequest org.xdi.oxauth.client.BaseClient< T extends BaseRequest, V extends BaseResponse >.clientRequest
protectedinherited

◆ clientResponse

ClientResponse<String> org.xdi.oxauth.client.BaseClient< T extends BaseRequest, V extends BaseResponse >.clientResponse
protectedinherited

◆ executor

ClientExecutor org.xdi.oxauth.client.BaseClient< T extends BaseRequest, V extends BaseResponse >.executor
protectedinherited

◆ jwksUri

String org.xdi.oxauth.client.UserInfoClient.jwksUri
private

◆ privateKey

PrivateKey org.xdi.oxauth.client.UserInfoClient.privateKey
private

◆ request

T org.xdi.oxauth.client.BaseClient< T extends BaseRequest, V extends BaseResponse >.request
protectedinherited

◆ response

V org.xdi.oxauth.client.BaseClient< T extends BaseRequest, V extends BaseResponse >.response
protectedinherited

◆ sharedKey

String org.xdi.oxauth.client.UserInfoClient.sharedKey
private

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