gluu
公開メンバ関数 | 非公開メンバ関数 | 非公開変数類 | 静的非公開変数類 | 全メンバ一覧
org.xdi.oxd.server.service.UmaTokenService クラス
org.xdi.oxd.server.service.UmaTokenService 連携図
Collaboration graph

公開メンバ関数

 UmaTokenService (RpService rpService, ValidationService validationService, DiscoveryService discoveryService, HttpService httpService, OxdServerConfiguration configuration, StateService stateService)
 
RpGetRptResponse getRpt (RpGetRptParams params) throws UnsupportedEncodingException
 
Pat getPat (String oxdId)
 
Pat obtainPat (String oxdId)
 
boolean useClientAuthentication (UmaScopeType scopeType)
 

非公開メンバ関数

UmaToken obtainToken (String oxdId, UmaScopeType scopeType, Rp site)
 
UmaToken obtainTokenWithClientCredentials (OpenIdConfigurationResponse discovery, Rp site, UmaScopeType scopeType)
 
List< String > scopes (UmaScopeType scopeType)
 
String scopesAsString (UmaScopeType scopeType)
 
UmaToken obtainTokenWithUserCredentials (OpenIdConfigurationResponse discovery, Rp site, UmaScopeType scopeType)
 

非公開変数類

final RpService rpService
 
final ValidationService validationService
 
final DiscoveryService discoveryService
 
final HttpService httpService
 
final OxdServerConfiguration configuration
 
final StateService stateService
 

静的非公開変数類

static final Logger LOG = LoggerFactory.getLogger(UmaTokenService.class)
 

詳解

著者
Yuriy Zabrovarnyy

構築子と解体子

◆ UmaTokenService()

org.xdi.oxd.server.service.UmaTokenService.UmaTokenService ( RpService  rpService,
ValidationService  validationService,
DiscoveryService  discoveryService,
HttpService  httpService,
OxdServerConfiguration  configuration,
StateService  stateService 
)
inline
60  {
61  this.rpService = rpService;
64  this.httpService = httpService;
67  }
final HttpService httpService
Definition: UmaTokenService.java:49
final RpService rpService
Definition: UmaTokenService.java:46
final ValidationService validationService
Definition: UmaTokenService.java:47
final StateService stateService
Definition: UmaTokenService.java:51
final OxdServerConfiguration configuration
Definition: UmaTokenService.java:50
final DiscoveryService discoveryService
Definition: UmaTokenService.java:48

関数詳解

◆ getPat()

Pat org.xdi.oxd.server.service.UmaTokenService.getPat ( String  oxdId)
inline
127  {
129 
130  Rp site = rpService.getRp(oxdId);
131 
132  if (site.getPat() != null && site.getPatCreatedAt() != null && site.getPatExpiresIn() > 0) {
133  Calendar expiredAt = Calendar.getInstance();
134  expiredAt.setTime(site.getPatCreatedAt());
135  expiredAt.add(Calendar.SECOND, site.getPatExpiresIn());
136 
137  if (!CoreUtils.isExpired(expiredAt.getTime())) {
138  LOG.debug("PAT from site configuration, PAT: " + site.getPat());
139  return new Pat(site.getPat(), "", site.getPatExpiresIn());
140  }
141  }
142 
143  return obtainPat(oxdId);
144  }
final RpService rpService
Definition: UmaTokenService.java:46
final ValidationService validationService
Definition: UmaTokenService.java:47
void notBlankOxdId(String oxdId)
Definition: ValidationService.java:29
Pat obtainPat(String oxdId)
Definition: UmaTokenService.java:146
static final Logger LOG
Definition: UmaTokenService.java:44
Rp getRp(String oxdId)
Definition: RpService.java:55

◆ getRpt()

RpGetRptResponse org.xdi.oxd.server.service.UmaTokenService.getRpt ( RpGetRptParams  params) throws UnsupportedEncodingException
inline
69  {
70  Rp rp = rpService.getRp(params.getOxdId());
71  UmaMetadata discovery = discoveryService.getUmaDiscoveryByOxdId(params.getOxdId());
72 
73  if (!Strings.isNullOrEmpty(rp.getRpt()) && rp.getRptExpiresAt() != null) {
74  if (!CoreUtils.isExpired(rp.getRptExpiresAt())) {
75  LOG.debug("RPT from rp, RPT: " + rp.getRpt() + ", rp: " + rp);
76 
77  RpGetRptResponse result = new RpGetRptResponse();
78  result.setRpt(rp.getRpt());
79  result.setTokenType(rp.getRptTokenType());
80  result.setPct(rp.getRptPct());
81  result.setUpdated(rp.getRptUpgraded());
82  return result;
83  }
84  }
85 
86  final org.xdi.oxauth.client.uma.UmaTokenService tokenService = UmaClientFactory.instance().createTokenService(discovery, httpService.getClientExecutor());
87  final UmaTokenResponse tokenResponse = tokenService.requestRpt(
88  "Basic " + Utils.encodeCredentials(rp.getClientId(), rp.getClientSecret()),
89  GrantType.OXAUTH_UMA_TICKET.getValue(),
90  params.getTicket(),
91  params.getClaimToken(),
92  params.getClaimTokenFormat(),
93  params.getPct(),
94  params.getRpt(),
95  params.getScope() != null ? Utils.joinAndUrlEncode(params.getScope()) : null
96  );
97 
98  if (tokenResponse != null && StringUtils.isNotBlank(tokenResponse.getAccessToken())) {
99  final IntrospectionService introspectionService = ServerLauncher.getInjector().getInstance(IntrospectionService.class);
100  CorrectRptIntrospectionResponse status = introspectionService.introspectRpt(params.getOxdId(), tokenResponse.getAccessToken());
101 
102  LOG.debug("RPT " + tokenResponse.getAccessToken() + ", status: " + status);
103  if (status.getActive()) {
104  LOG.debug("RPT is successfully obtained from AS. RPT: {}", tokenResponse.getAccessToken());
105 
106  rp.setRpt(tokenResponse.getAccessToken());
107  rp.setRptTokenType(tokenResponse.getTokenType());
108  rp.setRptPct(tokenResponse.getPct());
109  rp.setRptUpgraded(tokenResponse.getUpgraded());
110  rp.setRptCreatedAt(new Date(status.getIssuedAt() * 1000));
111  rp.setRptExpiresAt(new Date(status.getExpiresAt() * 1000));
113 
114  RpGetRptResponse result = new RpGetRptResponse();
115  result.setRpt(rp.getRpt());
116  result.setTokenType(rp.getRptTokenType());
117  result.setPct(rp.getRptPct());
118  result.setUpdated(rp.getRptUpgraded());
119  return result;
120  }
121  }
122 
123  LOG.error("Failed to get RPT for rp: " + rp);
124  throw new ErrorResponseException(ErrorResponseCode.FAILED_TO_GET_RPT);
125  }
ClientExecutor getClientExecutor()
Definition: HttpService.java:57
final HttpService httpService
Definition: UmaTokenService.java:49
final RpService rpService
Definition: UmaTokenService.java:46
OXAUTH_UMA_TICKET
Definition: GrantType.java:77
void updateSilently(Rp rp)
Definition: RpService.java:126
Definition: GrantType.java:23
UmaMetadata getUmaDiscoveryByOxdId(String oxdId)
Definition: DiscoveryService.java:85
Definition: UmaTokenService.java:11
UmaTokenResponse requestRpt( @HeaderParam("Authorization") String authorization, @FormParam("grant_type") String grantType, @FormParam("ticket") String ticket, @FormParam("claim_token") String claimToken, @FormParam("claim_token_format") String claimTokenFormat, @FormParam("pct") String pctCode, @FormParam("rpt") String rptCode, @FormParam("scope") String scope)
final DiscoveryService discoveryService
Definition: UmaTokenService.java:48
static final Logger LOG
Definition: UmaTokenService.java:44
Rp getRp(String oxdId)
Definition: RpService.java:55
Definition: AuthorizationRequest.java:7

◆ obtainPat()

Pat org.xdi.oxd.server.service.UmaTokenService.obtainPat ( String  oxdId)
inline
146  {
147  Rp site = rpService.getRp(oxdId);
148  UmaToken token = obtainToken(oxdId, UmaScopeType.PROTECTION, site);
149 
150  site.setPat(token.getToken());
151  site.setPatCreatedAt(new Date());
152  site.setPatExpiresIn(token.getExpiresIn());
153  site.setPatRefreshToken(token.getRefreshToken());
154 
156 
157  return (Pat) token;
158  }
Definition: UmaScopeType.java:17
final RpService rpService
Definition: UmaTokenService.java:46
void updateSilently(Rp rp)
Definition: RpService.java:126
PROTECTION
Definition: UmaScopeType.java:19
UmaToken obtainToken(String oxdId, UmaScopeType scopeType, Rp site)
Definition: UmaTokenService.java:160
Rp getRp(String oxdId)
Definition: RpService.java:55

◆ obtainToken()

UmaToken org.xdi.oxd.server.service.UmaTokenService.obtainToken ( String  oxdId,
UmaScopeType  scopeType,
Rp  site 
)
inlineprivate
160  {
161 
163 
164  final UmaToken token;
165  if (useClientAuthentication(scopeType)) {
166  token = obtainTokenWithClientCredentials(discovery, site, scopeType);
167  LOG.trace("Obtained token with client authentication: " + token);
168  } else {
169  token = obtainTokenWithUserCredentials(discovery, site, scopeType);
170  LOG.trace("Obtained token with user credentials: " + token);
171  }
172 
173  return token;
174  }
UmaToken obtainTokenWithUserCredentials(OpenIdConfigurationResponse discovery, Rp site, UmaScopeType scopeType)
Definition: UmaTokenService.java:225
UmaToken obtainTokenWithClientCredentials(OpenIdConfigurationResponse discovery, Rp site, UmaScopeType scopeType)
Definition: UmaTokenService.java:184
final DiscoveryService discoveryService
Definition: UmaTokenService.java:48
boolean useClientAuthentication(UmaScopeType scopeType)
Definition: UmaTokenService.java:176
static final Logger LOG
Definition: UmaTokenService.java:44
OpenIdConfigurationResponse getConnectDiscoveryResponseByOxdId(String oxdId)
Definition: DiscoveryService.java:49
Definition: OpenIdConfigurationResponse.java:26

◆ obtainTokenWithClientCredentials()

UmaToken org.xdi.oxd.server.service.UmaTokenService.obtainTokenWithClientCredentials ( OpenIdConfigurationResponse  discovery,
Rp  site,
UmaScopeType  scopeType 
)
inlineprivate
184  {
185  final TokenClient tokenClient = new TokenClient(discovery.getTokenEndpoint());
187  final TokenResponse response = tokenClient.execClientCredentialsGrant(scopesAsString(scopeType), site.getClientId(), site.getClientSecret());
188  if (response != null) {
189  if (Util.allNotBlank(response.getAccessToken())) {
190  if (!response.getScope().contains(scopeType.getValue())) {
191  LOG.error("oxd requested scope " + scopeType + " but AS returned access_token without that scope, token scopes :" + response.getScope());
192  LOG.error("Please check AS(oxauth) configuration and make sure UMA scope (uma_protection) is enabled.");
193  throw new RuntimeException("oxd requested scope " + scopeType + " but AS returned access_token without that scope, token scopes :" + response.getScope());
194  }
195 
196  final UmaToken opResponse = UmaTokenFactory.newToken(scopeType);
197  opResponse.setToken(response.getAccessToken());
198  opResponse.setRefreshToken(response.getRefreshToken());
199  opResponse.setExpiresIn(response.getExpiresIn());
200  return opResponse;
201  } else {
202  LOG.error("Token is blank in response, site: " + site);
203  }
204  } else {
205  LOG.error("No response from TokenClient");
206  }
207  throw new RuntimeException("Failed to obtain PAT.");
208  }
ClientExecutor getClientExecutor()
Definition: HttpService.java:57
String scopesAsString(UmaScopeType scopeType)
Definition: UmaTokenService.java:217
final HttpService httpService
Definition: UmaTokenService.java:49
Definition: TokenClient.java:24
String getScope()
Definition: TokenResponse.java:163
String getValue()
Definition: UmaScopeType.java:35
TokenResponse execClientCredentialsGrant(String scope, String clientId, String clientSecret)
Definition: TokenClient.java:146
void setExecutor(ClientExecutor executor)
Definition: BaseClient.java:84
Integer getExpiresIn()
Definition: TokenResponse.java:125
String getAccessToken()
Definition: TokenResponse.java:89
static boolean allNotBlank(String... p_strings)
Definition: Util.java:166
String getTokenEndpoint()
Definition: OpenIdConfigurationResponse.java:192
Definition: TokenResponse.java:22
static final Logger LOG
Definition: UmaTokenService.java:44
Definition: Util.java:40
String getRefreshToken()
Definition: TokenResponse.java:144

◆ obtainTokenWithUserCredentials()

UmaToken org.xdi.oxd.server.service.UmaTokenService.obtainTokenWithUserCredentials ( OpenIdConfigurationResponse  discovery,
Rp  site,
UmaScopeType  scopeType 
)
inlineprivate
225  {
226 
227  // 1. Request authorization and receive the authorization code.
228  final List<ResponseType> responseTypes = Lists.newArrayList();
229  responseTypes.add(ResponseType.CODE);
230  responseTypes.add(ResponseType.ID_TOKEN);
231 
232  final String state = stateService.generateState();
233 
234  final AuthorizationRequest request = new AuthorizationRequest(responseTypes, site.getClientId(), scopes(scopeType), site.getAuthorizationRedirectUri(), null);
235  request.setState(state);
236  request.setAuthUsername(site.getUserId());
237  request.setAuthPassword(site.getUserSecret());
238  request.getPrompts().add(Prompt.NONE);
239 
240  final AuthorizeClient authorizeClient = new AuthorizeClient(discovery.getAuthorizationEndpoint());
241  authorizeClient.setExecutor(httpService.getClientExecutor());
242  authorizeClient.setRequest(request);
243  final AuthorizationResponse response1 = authorizeClient.exec();
244 
245  ClientUtils.showClient(authorizeClient);
246 
247  final String scope = response1.getScope();
248  final String authorizationCode = response1.getCode();
249  if (!state.equals(response1.getState())) {
250  throw new ErrorResponseException(ErrorResponseCode.INVALID_STATE);
251  }
252 
253  if (Util.allNotBlank(authorizationCode)) {
254 
255  // 2. Request access token using the authorization code.
256  final TokenRequest tokenRequest = new TokenRequest(GrantType.AUTHORIZATION_CODE);
257  tokenRequest.setCode(authorizationCode);
258  tokenRequest.setRedirectUri(site.getAuthorizationRedirectUri());
259  tokenRequest.setAuthUsername(site.getClientId());
260  tokenRequest.setAuthPassword(site.getClientSecret());
262  tokenRequest.setScope(scope);
263 
264  final TokenClient tokenClient1 = new TokenClient(discovery.getTokenEndpoint());
265  tokenClient1.setRequest(tokenRequest);
266  tokenClient1.setExecutor(httpService.getClientExecutor());
267  final TokenResponse response2 = tokenClient1.exec();
268  ClientUtils.showClient(authorizeClient);
269 
270  if (response2.getStatus() == 200 && Util.allNotBlank(response2.getAccessToken())) {
271  final UmaToken token = UmaTokenFactory.newToken(scopeType);
272  token.setToken(response2.getAccessToken());
273  token.setRefreshToken(response2.getRefreshToken());
274  token.setExpiresIn(response2.getExpiresIn());
275  return token;
276  } else {
277  LOG.error("Status: " + response2.getStatus() + ", Entity: " + response2.getEntity());
278  }
279  } else {
280  LOG.debug("Authorization code is blank.");
281  }
282  throw new RuntimeException("Failed to obtain Token, scopeType: " + scopeType + ", site: " + site);
283  }
ID_TOKEN
Definition: ResponseType.java:47
CODE
Definition: ResponseType.java:39
ClientExecutor getClientExecutor()
Definition: HttpService.java:57
Definition: ClientUtils.java:17
void setScope(String scope)
Definition: TokenRequest.java:233
CLIENT_SECRET_BASIC
Definition: AuthenticationMethod.java:18
final HttpService httpService
Definition: UmaTokenService.java:49
String getCode()
Definition: AuthorizationResponse.java:167
Definition: TokenClient.java:24
void setAuthUsername(String authUsername)
Definition: BaseRequest.java:62
List< Prompt > getPrompts()
Definition: AuthorizationRequest.java:275
String getState()
Definition: AuthorizationResponse.java:314
AuthorizationResponse exec()
Definition: AuthorizeClient.java:167
final StateService stateService
Definition: UmaTokenService.java:51
String generateState()
Definition: StateService.java:42
Definition: GrantType.java:23
static void showClient(BaseClient client)
Definition: ClientUtils.java:21
Definition: TokenRequest.java:34
void setRedirectUri(String redirectUri)
Definition: TokenRequest.java:179
void setAuthPassword(String authPassword)
Definition: BaseRequest.java:70
Definition: AuthorizeClient.java:29
List< String > scopes(UmaScopeType scopeType)
Definition: UmaTokenService.java:210
void setExecutor(ClientExecutor executor)
Definition: BaseClient.java:84
Integer getExpiresIn()
Definition: TokenResponse.java:125
AUTHORIZATION_CODE
Definition: GrantType.java:33
String getAccessToken()
Definition: TokenResponse.java:89
NONE
Definition: Prompt.java:27
static boolean allNotBlank(String... p_strings)
Definition: Util.java:166
String getTokenEndpoint()
Definition: OpenIdConfigurationResponse.java:192
Definition: TokenResponse.java:22
TokenResponse exec()
Definition: TokenClient.java:218
static final Logger LOG
Definition: UmaTokenService.java:44
void setRequest(T request)
Definition: BaseClient.java:68
void setAuthenticationMethod(AuthenticationMethod authenticationMethod)
Definition: BaseRequest.java:78
Definition: AuthorizationResponse.java:32
String getAuthorizationEndpoint()
Definition: OpenIdConfigurationResponse.java:174
Definition: Prompt.java:18
String getScope()
Definition: AuthorizationResponse.java:277
void setCode(String code)
Definition: TokenRequest.java:143
Definition: AuthorizationRequest.java:33
Definition: ResponseType.java:34
void setState(String state)
Definition: AuthorizationRequest.java:217
Definition: Util.java:40
Definition: AuthenticationMethod.java:12
String getRefreshToken()
Definition: TokenResponse.java:144

◆ scopes()

List<String> org.xdi.oxd.server.service.UmaTokenService.scopes ( UmaScopeType  scopeType)
inlineprivate
210  {
211  final List<String> scopes = new ArrayList<String>();
212  scopes.add(scopeType.getValue());
213  scopes.add("openid");
214  return scopes;
215  }
String getValue()
Definition: UmaScopeType.java:35
List< String > scopes(UmaScopeType scopeType)
Definition: UmaTokenService.java:210

◆ scopesAsString()

String org.xdi.oxd.server.service.UmaTokenService.scopesAsString ( UmaScopeType  scopeType)
inlineprivate
217  {
218  String scopesAsString = "";
219  for (String scope : scopes(scopeType)) {
220  scopesAsString += scope + " ";
221  }
222  return scopesAsString.trim();
223  }
String scopesAsString(UmaScopeType scopeType)
Definition: UmaTokenService.java:217
List< String > scopes(UmaScopeType scopeType)
Definition: UmaTokenService.java:210

◆ useClientAuthentication()

boolean org.xdi.oxd.server.service.UmaTokenService.useClientAuthentication ( UmaScopeType  scopeType)
inline
176  {
177  if (scopeType == UmaScopeType.PROTECTION) {
179  } else {
180  throw new RuntimeException("Unknown UMA scope type: " + scopeType);
181  }
182  }
Definition: UmaScopeType.java:17
PROTECTION
Definition: UmaScopeType.java:19
final OxdServerConfiguration configuration
Definition: UmaTokenService.java:50
Boolean getUseClientAuthenticationForPat()
Definition: OxdServerConfiguration.java:222

メンバ詳解

◆ configuration

final OxdServerConfiguration org.xdi.oxd.server.service.UmaTokenService.configuration
private

◆ discoveryService

final DiscoveryService org.xdi.oxd.server.service.UmaTokenService.discoveryService
private

◆ httpService

final HttpService org.xdi.oxd.server.service.UmaTokenService.httpService
private

◆ LOG

final Logger org.xdi.oxd.server.service.UmaTokenService.LOG = LoggerFactory.getLogger(UmaTokenService.class)
staticprivate

◆ rpService

final RpService org.xdi.oxd.server.service.UmaTokenService.rpService
private

◆ stateService

final StateService org.xdi.oxd.server.service.UmaTokenService.stateService
private

◆ validationService

final ValidationService org.xdi.oxd.server.service.UmaTokenService.validationService
private

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