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

公開メンバ関数

void init ()
 
Pair< Boolean, Response > validateRptToken (Token patToken, String authorization, String umaResourceId, String scopeId)
 
Pair< Boolean, Response > validateRptToken (Token patToken, String authorization, String resourceId, List< String > scopeIds)
 
String registerResourcePermission (Token patToken, String resourceId, List< String > scopeIds)
 

限定公開変数類

AppConfiguration appConfiguration
 

非公開メンバ関数

boolean isRptHasPermissions (RptIntrospectionResponse umaRptStatusResponse)
 
RptIntrospectionResponse getStatusResponse (Token patToken, String rptToken)
 
Response prepareRegisterPermissionsResponse (Token patToken, String resourceId, List< String > scopeIds)
 
String getHost (String uri) throws MalformedURLException
 

非公開変数類

Logger log
 
UmaMetadata umaMetadata
 
JsonService jsonService
 
AppInitializer appInitializer
 
org.xdi.oxauth.client.uma.UmaPermissionService permissionService
 
UmaRptIntrospectionService rptStatusService
 
final Pair< Boolean, Response > authenticationFailure = new Pair<Boolean, Response>(false, null)
 
final Pair< Boolean, Response > authenticationSuccess = new Pair<Boolean, Response>(true, null)
 
ConnectionKeepAliveStrategy connectionKeepAliveStrategy
 

静的非公開変数類

static final long serialVersionUID = -3347131971095468866L
 

詳解

Provide methods to work with permissions and RPT tokens

著者
Yuriy Movchan Date: 12/06/2016

関数詳解

◆ getHost()

String org.gluu.oxtrust.service.uma.UmaPermissionService.getHost ( String  uri) throws MalformedURLException
inlineprivate
212  {
213  URL url = new URL(uri);
214 
215  return url.getHost();
216  }

◆ getStatusResponse()

RptIntrospectionResponse org.gluu.oxtrust.service.uma.UmaPermissionService.getStatusResponse ( Token  patToken,
String  rptToken 
)
inlineprivate
155  {
156  String authorization = "Bearer " + patToken.getAccessToken();
157 
158  // Determine RPT token to status
159  RptIntrospectionResponse rptStatusResponse = null;
160  try {
161  rptStatusResponse = this.rptStatusService.requestRptStatus(authorization, rptToken, "");
162  } catch (Exception ex) {
163  log.error("Failed to determine RPT status", ex);
164  ex.printStackTrace();
165  }
166 
167  // Validate RPT status response
168  if ((rptStatusResponse == null) || !rptStatusResponse.getActive()) {
169  return null;
170  }
171 
172  return rptStatusResponse;
173  }
UmaRptIntrospectionService rptStatusService
Definition: UmaPermissionService.java:70
Logger log
Definition: UmaPermissionService.java:55
RptIntrospectionResponse requestRptStatus(@HeaderParam("Authorization") String authorization, @FormParam("token") String rptAsString, @FormParam("token_type_hint") String tokenTypeHint)

◆ init()

void org.gluu.oxtrust.service.uma.UmaPermissionService.init ( )
inline
76  {
77  if (this.umaMetadata != null) {
78  if (appConfiguration.isRptConnectionPoolUseConnectionPooling()) {
79 
80  // For more information about PoolingHttpClientConnectionManager, please see:
81  // http://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/index.html?org/apache/http/impl/conn/PoolingHttpClientConnectionManager.html
82 
83  log.info("##### Initializing custom ClientExecutor...");
84  PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager();
85  connectionManager.setMaxTotal(appConfiguration.getRptConnectionPoolMaxTotal());
86  connectionManager.setDefaultMaxPerRoute(appConfiguration.getRptConnectionPoolDefaultMaxPerRoute());
87  connectionManager.setValidateAfterInactivity(appConfiguration.getRptConnectionPoolValidateAfterInactivity() * 1000);
88  CloseableHttpClient client = HttpClients.custom()
89  .setKeepAliveStrategy(connectionKeepAliveStrategy)
90  .setConnectionManager(connectionManager)
91  .build();
92  ClientExecutor clientExecutor = new ApacheHttpClient4Executor(client);
93  log.info("##### Initializing custom ClientExecutor DONE");
94 
95  this.permissionService = UmaClientFactory.instance().createPermissionService(this.umaMetadata, clientExecutor);
96  this.rptStatusService = UmaClientFactory.instance().createRptStatusService(this.umaMetadata, clientExecutor);
97 
98  } else {
99  this.permissionService = UmaClientFactory.instance().createPermissionService(this.umaMetadata);
100  this.rptStatusService = UmaClientFactory.instance().createRptStatusService(this.umaMetadata);
101  }
102  }
103  }
UmaRptIntrospectionService rptStatusService
Definition: UmaPermissionService.java:70
ConnectionKeepAliveStrategy connectionKeepAliveStrategy
Definition: UmaPermissionService.java:218
AppConfiguration appConfiguration
Definition: UmaPermissionService.java:61
Logger log
Definition: UmaPermissionService.java:55
UmaMetadata umaMetadata
Definition: UmaPermissionService.java:58
org.xdi.oxauth.client.uma.UmaPermissionService permissionService
Definition: UmaPermissionService.java:69

◆ isRptHasPermissions()

boolean org.gluu.oxtrust.service.uma.UmaPermissionService.isRptHasPermissions ( RptIntrospectionResponse  umaRptStatusResponse)
inlineprivate
151  {
152  return !((umaRptStatusResponse.getPermissions() == null) || umaRptStatusResponse.getPermissions().isEmpty());
153  }

◆ prepareRegisterPermissionsResponse()

Response org.gluu.oxtrust.service.uma.UmaPermissionService.prepareRegisterPermissionsResponse ( Token  patToken,
String  resourceId,
List< String >  scopeIds 
)
inlineprivate
191  {
192  String ticket = registerResourcePermission(patToken, resourceId, scopeIds);
193  if (StringHelper.isEmpty(ticket)) {
194  return null;
195  }
196 
197  log.debug("Construct response: HTTP 401 (Unauthorized), ticket: '{}'", ticket);
198  Response response = null;
199  try {
200  String authHeaderValue = String.format("UMA realm=\"Authorization required\", host_id=%s, as_uri=%s, ticket=%s",
202  response = Response.status(Response.Status.UNAUTHORIZED).
203  header("WWW-Authenticate", authHeaderValue).
204  build();
205  } catch (MalformedURLException ex) {
206  log.error("Failed to determine host by URI", ex);
207  }
208 
209  return response;
210  }
String getHost(String uri)
Definition: UmaPermissionService.java:212
AppConfiguration appConfiguration
Definition: UmaPermissionService.java:61
String registerResourcePermission(Token patToken, String resourceId, List< String > scopeIds)
Definition: UmaPermissionService.java:175
Logger log
Definition: UmaPermissionService.java:55
String getUmaConfigurationEndpoint()
Definition: AppInitializer.java:381
AppInitializer appInitializer
Definition: UmaPermissionService.java:67

◆ registerResourcePermission()

String org.gluu.oxtrust.service.uma.UmaPermissionService.registerResourcePermission ( Token  patToken,
String  resourceId,
List< String >  scopeIds 
)
inline
175  {
176 
177  UmaPermission permission = new UmaPermission();
178  permission.setResourceId(resourceId);
179  permission.setScopes(scopeIds);
180 
181  PermissionTicket ticket = permissionService.registerPermission(
182  "Bearer " + patToken.getAccessToken(), UmaPermissionList.instance(permission));
183 
184  if (ticket == null) {
185  return null;
186  }
187 
188  return ticket.getTicket();
189  }
org.xdi.oxauth.client.uma.UmaPermissionService permissionService
Definition: UmaPermissionService.java:69

◆ validateRptToken() [1/2]

Pair<Boolean, Response> org.gluu.oxtrust.service.uma.UmaPermissionService.validateRptToken ( Token  patToken,
String  authorization,
String  umaResourceId,
String  scopeId 
)
inline
105  {
106  return validateRptToken(patToken, authorization, umaResourceId, Arrays.asList(scopeId));
107  }
Pair< Boolean, Response > validateRptToken(Token patToken, String authorization, String umaResourceId, String scopeId)
Definition: UmaPermissionService.java:105

◆ validateRptToken() [2/2]

Pair<Boolean, Response> org.gluu.oxtrust.service.uma.UmaPermissionService.validateRptToken ( Token  patToken,
String  authorization,
String  resourceId,
List< String >  scopeIds 
)
inline
109  {
110  /* //caller of this method never pass null patToken
111  if (patToken == null) {
112  return authenticationFailure;
113  } */
114 
115  if (StringHelper.isNotEmpty(authorization) && authorization.startsWith("Bearer ")) {
116  String rptToken = authorization.substring(7);
117 
118  RptIntrospectionResponse rptStatusResponse = getStatusResponse(patToken, rptToken);
119  if ((rptStatusResponse == null) || !rptStatusResponse.getActive()) {
120  log.error("Status response for RPT token: '{}' is invalid", rptToken);
121  //return authenticationFailure;
122  } else{
123  boolean rptHasPermissions = isRptHasPermissions(rptStatusResponse);
124 
125  if (rptHasPermissions) {
126  // Collect all scopes
127  List<String> returnScopeIds = new LinkedList<String>();
128  for (UmaPermission umaPermission : rptStatusResponse.getPermissions()) {
129  if (umaPermission.getScopes() != null) {
130  returnScopeIds.addAll(umaPermission.getScopes());
131  }
132  }
133 
134  if (returnScopeIds.containsAll(scopeIds)) {
135  return authenticationSuccess;
136  }
137 
138  log.error("Status response for RPT token: '{}' not contains right permissions", rptToken);
139  }
140  }
141  }
142 
143  Response registerPermissionsResponse = prepareRegisterPermissionsResponse(patToken, resourceId, scopeIds);
144  if (registerPermissionsResponse == null) {
145  return authenticationFailure;
146  }
147 
148  return new Pair<Boolean, Response>(true, registerPermissionsResponse);
149  }
Response prepareRegisterPermissionsResponse(Token patToken, String resourceId, List< String > scopeIds)
Definition: UmaPermissionService.java:191
final Pair< Boolean, Response > authenticationFailure
Definition: UmaPermissionService.java:72
Logger log
Definition: UmaPermissionService.java:55
boolean isRptHasPermissions(RptIntrospectionResponse umaRptStatusResponse)
Definition: UmaPermissionService.java:151
RptIntrospectionResponse getStatusResponse(Token patToken, String rptToken)
Definition: UmaPermissionService.java:155
final Pair< Boolean, Response > authenticationSuccess
Definition: UmaPermissionService.java:73

メンバ詳解

◆ appConfiguration

AppConfiguration org.gluu.oxtrust.service.uma.UmaPermissionService.appConfiguration
protected

◆ appInitializer

AppInitializer org.gluu.oxtrust.service.uma.UmaPermissionService.appInitializer
private

◆ authenticationFailure

final Pair<Boolean, Response> org.gluu.oxtrust.service.uma.UmaPermissionService.authenticationFailure = new Pair<Boolean, Response>(false, null)
private

◆ authenticationSuccess

final Pair<Boolean, Response> org.gluu.oxtrust.service.uma.UmaPermissionService.authenticationSuccess = new Pair<Boolean, Response>(true, null)
private

◆ connectionKeepAliveStrategy

ConnectionKeepAliveStrategy org.gluu.oxtrust.service.uma.UmaPermissionService.connectionKeepAliveStrategy
private
初期値:
= new ConnectionKeepAliveStrategy() {
@Override
public long getKeepAliveDuration(HttpResponse httpResponse, HttpContext httpContext) {
HeaderElementIterator headerElementIterator = new BasicHeaderElementIterator(httpResponse.headerIterator(HTTP.CONN_KEEP_ALIVE));
while (headerElementIterator.hasNext()) {
HeaderElement headerElement = headerElementIterator.nextElement();
String name = headerElement.getName();
String value = headerElement.getValue();
if (value != null && name.equalsIgnoreCase("timeout")) {
return Long.parseLong(value) * 1000;
}
}
return appConfiguration.getRptConnectionPoolCustomKeepAliveTimeout() * 1000;
}
}

◆ jsonService

JsonService org.gluu.oxtrust.service.uma.UmaPermissionService.jsonService
private

◆ log

Logger org.gluu.oxtrust.service.uma.UmaPermissionService.log
private

◆ permissionService

org.xdi.oxauth.client.uma.UmaPermissionService org.gluu.oxtrust.service.uma.UmaPermissionService.permissionService
private

◆ rptStatusService

UmaRptIntrospectionService org.gluu.oxtrust.service.uma.UmaPermissionService.rptStatusService
private

◆ serialVersionUID

final long org.gluu.oxtrust.service.uma.UmaPermissionService.serialVersionUID = -3347131971095468866L
staticprivate

◆ umaMetadata

UmaMetadata org.gluu.oxtrust.service.uma.UmaPermissionService.umaMetadata
private

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