gluu
公開メンバ関数 | 関数 | 非公開メンバ関数 | 非公開変数類 | 静的非公開変数類 | 全メンバ一覧
org.gluu.oxtrust.api.client.util.UmaAuthorizationClient クラス
org.gluu.oxtrust.api.client.util.UmaAuthorizationClient 連携図
Collaboration graph

公開メンバ関数

 UmaAuthorizationClient (String domain, String umaAatClientId, String umaAatClientJksPath, String umaAatClientJksPassword, String umaAatClientKeyId)
 
String getAuthenticationHeader ()
 

関数

boolean authorize (Response response) throws OxTrustAuthorizationException
 

非公開メンバ関数

boolean obtainAuthorizedRpt (String asUri, String ticket) throws OxTrustAuthorizationException
 
String getAuthorizedRpt (String asUri, String ticket) throws OxTrustAuthorizationException
 
TokenRequest getAuthorizationTokenRequest (UmaMetadata umaMetadata) throws OxTrustAuthorizationException
 

非公開変数類

String rpt
 
final String umaAatClientId
 
final String umaAatClientKeyId
 
final String umaAatClientJksPath
 
final String umaAatClientJksPassword
 
final ResteasyClient client
 

静的非公開変数類

static final Logger logger = LogManager.getLogger(UmaAuthorizationClient.class)
 

詳解

UMA token receiving.

著者
Yuriy Movchan
Dmitry Ognyannikov

構築子と解体子

◆ UmaAuthorizationClient()

org.gluu.oxtrust.api.client.util.UmaAuthorizationClient.UmaAuthorizationClient ( String  domain,
String  umaAatClientId,
String  umaAatClientJksPath,
String  umaAatClientJksPassword,
String  umaAatClientKeyId 
)
inline

Constructs a UmaAuthorizationClient object with the specified parameters and service contract.

引数
domainThe root URL of the oxTrust API service. Usually in the form
https://your.gluu-server.com/identity/restv1
umaAatClientIdRequesting party Client Id
umaAatClientJksPathPath to requesting party jks file in local filesystem
umaAatClientJksPasswordKeystore password
umaAatClientKeyIdKey Id in the keystore. Pass an empty string to use the first key in keystore
55  {
56  /*
57  Configures a proxy to interact with the service using the new JAX-RS 2.0 Client API, see section
58  "Resteasy Proxy Framework" of RESTEasy JAX-RS user guide
59  */
60  client = new ResteasyClientBuilder().build();
61  ResteasyWebTarget target = client.target(domain);
62 
63 
68  }
final String umaAatClientId
Definition: UmaAuthorizationClient.java:39
final String umaAatClientJksPassword
Definition: UmaAuthorizationClient.java:42
final String umaAatClientKeyId
Definition: UmaAuthorizationClient.java:40
final ResteasyClient client
Definition: UmaAuthorizationClient.java:44
final String umaAatClientJksPath
Definition: UmaAuthorizationClient.java:41

関数詳解

◆ authorize()

boolean org.gluu.oxtrust.api.client.util.UmaAuthorizationClient.authorize ( Response  response) throws OxTrustAuthorizationException
inlinepackage

Recomputes a new RPT according to UMA workflow if the response passed as parameter has status code 401 (unauthorized).

引数
responseA Response object corresponding to the request obtained in the previous call to a service method
戻り値
If the parameter passed has a status code different to 401, it returns false. Otherwise it returns the success of the attempt made to get a new RPT
89  {
90 
91  boolean value = false;
92 
93  if (response.getStatus() == Response.Status.UNAUTHORIZED.getStatusCode()) {
94 
95  try {
96  String permissionTicketResponse = response.getHeaderString("WWW-Authenticate");
97  String permissionTicket = null;
98  String asUri = null;
99 
100  String[] headerKeyValues = StringHelper.split(permissionTicketResponse, ",");
101  for (String headerKeyValue : headerKeyValues) {
102  if (headerKeyValue.startsWith("ticket=")) {
103  permissionTicket = headerKeyValue.substring(7);
104  }
105  if (headerKeyValue.startsWith("as_uri=")) {
106  asUri = headerKeyValue.substring(7);
107  }
108  }
109  value= !StringHelper.isEmpty(asUri) && !StringHelper.isEmpty(permissionTicket) && obtainAuthorizedRpt(asUri, permissionTicket);
110  } catch (Exception e) {
111  throw new OxTrustAuthorizationException(e.getMessage(), e);
112  }
113  }
114 
115  return value;
116  }
boolean obtainAuthorizedRpt(String asUri, String ticket)
Definition: UmaAuthorizationClient.java:118

◆ getAuthenticationHeader()

String org.gluu.oxtrust.api.client.util.UmaAuthorizationClient.getAuthenticationHeader ( )
inline

Builds a string suitable for being passed as an authorization header. It does so by prefixing the current Requesting Party Token this object has with the word "Bearer ".

戻り値
String built or null if this instance has no RPT yet
78  {
79  return StringHelper.isEmpty(rpt) ? null : "Bearer " + rpt;
80  }
String rpt
Definition: UmaAuthorizationClient.java:37

◆ getAuthorizationTokenRequest()

TokenRequest org.gluu.oxtrust.api.client.util.UmaAuthorizationClient.getAuthorizationTokenRequest ( UmaMetadata  umaMetadata) throws OxTrustAuthorizationException
inlineprivate
160  {
161 
162  try {
163  if (StringHelper.isEmpty(umaAatClientJksPath) || StringHelper.isEmpty(umaAatClientJksPassword)) {
164  throw new OxTrustAuthorizationException("UMA JKS keystore path or password is empty");
165  }
166  OxAuthCryptoProvider cryptoProvider;
167  try {
168  cryptoProvider = new OxAuthCryptoProvider(umaAatClientJksPath, umaAatClientJksPassword, null);
169  }
170  catch (Exception ex) {
171  throw new OxTrustAuthorizationException("Failed to initialize crypto provider");
172  }
173 
174  String keyId = umaAatClientKeyId;
175  if (StringHelper.isEmpty(keyId)) {
176  // Get first key
177  List<String> aliases = cryptoProvider.getKeyAliases();
178  if (aliases.size() > 0) {
179  keyId = aliases.get(0);
180  }
181  }
182 
183  if (StringHelper.isEmpty(keyId)) {
184  throw new OxTrustAuthorizationException("UMA keyId is empty");
185  }
186 
187  TokenRequest tokenRequest = new TokenRequest(GrantType.CLIENT_CREDENTIALS);
188  tokenRequest.setAuthenticationMethod(AuthenticationMethod.PRIVATE_KEY_JWT);
189  tokenRequest.setAuthUsername(umaAatClientId);
190  tokenRequest.setCryptoProvider(cryptoProvider);
191  tokenRequest.setAlgorithm(cryptoProvider.getSignatureAlgorithm(keyId));
192  tokenRequest.setKeyId(keyId);
193  tokenRequest.setAudience(umaMetadata.getTokenEndpoint());
194 
195  return tokenRequest;
196  } catch (Exception ex) {
197  throw new OxTrustAuthorizationException("Failed to get client token", ex);
198  }
199 
200  }
final String umaAatClientId
Definition: UmaAuthorizationClient.java:39
final String umaAatClientJksPassword
Definition: UmaAuthorizationClient.java:42
final String umaAatClientKeyId
Definition: UmaAuthorizationClient.java:40
final String umaAatClientJksPath
Definition: UmaAuthorizationClient.java:41

◆ getAuthorizedRpt()

String org.gluu.oxtrust.api.client.util.UmaAuthorizationClient.getAuthorizedRpt ( String  asUri,
String  ticket 
) throws OxTrustAuthorizationException
inlineprivate
128  {
129 
130  try {
131  // Get metadata configuration
132  UmaMetadata umaMetadata = UmaClientFactory.instance().createMetadataService(asUri).getMetadata();
133  if (umaMetadata == null) {
134  throw new OxTrustAuthorizationException(String.format("Failed to load valid UMA metadata configuration from: %s", asUri));
135  }
136 
137  TokenRequest tokenRequest = getAuthorizationTokenRequest(umaMetadata);
138  //No need for claims token. See comments on issue https://github.com/GluuFederation/SCIM-Client/issues/22
139 
140  UmaTokenService tokenService = UmaClientFactory.instance().createTokenService(umaMetadata);
141  UmaTokenResponse rptResponse = tokenService.requestJwtAuthorizationRpt(ClientAssertionType.JWT_BEARER.toString(), tokenRequest.getClientAssertion(), GrantType.OXAUTH_UMA_TICKET.getValue(), ticket, null, null, null, null, null); //ClaimTokenFormatType.ID_TOKEN.getValue()
142 
143  if (rptResponse == null) {
144  throw new OxTrustAuthorizationException("UMA RPT token response is invalid");
145  }
146 
147  if (StringUtils.isBlank(rptResponse.getAccessToken())) {
148  throw new OxTrustAuthorizationException("UMA RPT is invalid");
149  }
150 
151  this.rpt = rptResponse.getAccessToken();
152 
153  return rpt;
154  } catch (Exception ex) {
155  throw new OxTrustAuthorizationException(ex.getMessage(), ex);
156  }
157 
158  }
String rpt
Definition: UmaAuthorizationClient.java:37
TokenRequest getAuthorizationTokenRequest(UmaMetadata umaMetadata)
Definition: UmaAuthorizationClient.java:160

◆ obtainAuthorizedRpt()

boolean org.gluu.oxtrust.api.client.util.UmaAuthorizationClient.obtainAuthorizedRpt ( String  asUri,
String  ticket 
) throws OxTrustAuthorizationException
inlineprivate
118  {
119 
120  try {
121  return StringUtils.isNotBlank(getAuthorizedRpt(asUri, ticket));
122  } catch (Exception e) {
123  throw new OxTrustAuthorizationException(e.getMessage(), e);
124  }
125 
126  }
String getAuthorizedRpt(String asUri, String ticket)
Definition: UmaAuthorizationClient.java:128

メンバ詳解

◆ client

final ResteasyClient org.gluu.oxtrust.api.client.util.UmaAuthorizationClient.client
private

◆ logger

final Logger org.gluu.oxtrust.api.client.util.UmaAuthorizationClient.logger = LogManager.getLogger(UmaAuthorizationClient.class)
staticprivate

◆ rpt

String org.gluu.oxtrust.api.client.util.UmaAuthorizationClient.rpt
private

◆ umaAatClientId

final String org.gluu.oxtrust.api.client.util.UmaAuthorizationClient.umaAatClientId
private

◆ umaAatClientJksPassword

final String org.gluu.oxtrust.api.client.util.UmaAuthorizationClient.umaAatClientJksPassword
private

◆ umaAatClientJksPath

final String org.gluu.oxtrust.api.client.util.UmaAuthorizationClient.umaAatClientJksPath
private

◆ umaAatClientKeyId

final String org.gluu.oxtrust.api.client.util.UmaAuthorizationClient.umaAatClientKeyId
private

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