gluu
公開メンバ関数 | 非公開メンバ関数 | 非公開変数類 | 全メンバ一覧
org.xdi.oxauth.register.ws.rs.RegisterRestWebServiceImpl クラス
org.xdi.oxauth.register.ws.rs.RegisterRestWebServiceImpl の継承関係図
Inheritance graph
org.xdi.oxauth.register.ws.rs.RegisterRestWebServiceImpl 連携図
Collaboration graph

公開メンバ関数

Response requestRegister (String requestParams, String authorization, HttpServletRequest httpRequest, SecurityContext securityContext)
 
Response.ResponseBuilder internalErrorResponse ()
 
Response requestClientUpdate (String requestParams, String clientId, @HeaderParam("Authorization") String authorization, @Context HttpServletRequest httpRequest, @Context SecurityContext securityContext)
 
Response requestClientRead (String clientId, String authorization, HttpServletRequest httpRequest, SecurityContext securityContext)
 
Response requestRegister ( @ApiParam(value="Request parameters as JSON object with data described by Connect Client Registration Specification. ", required=true) String requestParams, @HeaderParam("Authorization") String authorization, @Context HttpServletRequest httpRequest, @Context SecurityContext securityContext)
 
Response requestClientUpdate ( @ApiParam(value="Request parameters as JSON object with data described by Connect Client Registration Specification. ", required=true) String requestParams, @QueryParam("client_id") @ApiParam(value="Client ID that identifies client that must be updated by this request.", required=true) String clientId, @HeaderParam("Authorization") String authorization, @Context HttpServletRequest httpRequest, @Context SecurityContext securityContext)
 
Response requestClientRead ( @QueryParam("client_id") @ApiParam(value="Client ID that identifies client.", required=true) String clientId, @HeaderParam("Authorization") String authorization, @Context HttpServletRequest httpRequest, @Context SecurityContext securityContext)
 

非公開メンバ関数

Response registerClientImpl (String requestParams, HttpServletRequest httpRequest, SecurityContext securityContext)
 
void updateClientFromRequestObject (Client p_client, RegisterRequest requestObject, boolean update) throws JSONException
 
String clientAsEntity (Client p_client) throws JSONException, StringEncrypter.EncryptionException
 
JSONObject getJSONObject (Client client, boolean authorizationRequestCustomAllowedParameters) throws JSONException, StringEncrypter.EncryptionException
 
void putCustomStuffIntoObject (Client p_client, JSONObject p_requestObject) throws JSONException
 
boolean processApplicationAttributes (Client p_client, String attr, final List< String > parameterValues)
 
String clientScopesToString (Client client)
 

非公開変数類

Logger log
 
ApplicationAuditLogger applicationAuditLogger
 
ErrorResponseFactory errorResponseFactory
 
ScopeService scopeService
 
AttributeService attributeService
 
InumService inumService
 
ClientService clientService
 
TokenService tokenService
 
MetricService metricService
 
ExternalDynamicClientRegistrationService externalDynamicClientRegistrationService
 
RegisterParamsValidator registerParamsValidator
 
AppConfiguration appConfiguration
 
StaticConfiguration staticConfiguration
 

詳解

Implementation for register REST web services.

著者
Javier Rojas Blum
Yuriy Zabrovarnyy
Yuriy Movchan
バージョン
August 2, 2018

関数詳解

◆ clientAsEntity()

String org.xdi.oxauth.register.ws.rs.RegisterRestWebServiceImpl.clientAsEntity ( Client  p_client) throws JSONException, StringEncrypter.EncryptionException
inlineprivate
586  {
587  final JSONObject jsonObject = getJSONObject(p_client, appConfiguration.getLegacyDynamicRegistrationScopeParam());
588  return jsonObject.toString(4).replace("\\/", "/");
589  }
JSONObject getJSONObject(Client client, boolean authorizationRequestCustomAllowedParameters)
Definition: RegisterRestWebServiceImpl.java:591
AppConfiguration appConfiguration
Definition: RegisterRestWebServiceImpl.java:97
Boolean getLegacyDynamicRegistrationScopeParam()
Definition: AppConfiguration.java:1385

◆ clientScopesToString()

String org.xdi.oxauth.register.ws.rs.RegisterRestWebServiceImpl.clientScopesToString ( Client  client)
inlineprivate
731  {
732  String[] scopeDns = client.getScopes();
733  if (scopeDns != null) {
734  String[] scopeNames = new String[scopeDns.length];
735  for (int i = 0; i < scopeDns.length; i++) {
736  Scope scope = scopeService.getScopeByDn(scopeDns[i]);
737  scopeNames[i] = scope.getDisplayName();
738  }
739  return StringUtils.join(scopeNames, " ");
740  }
741  return null;
742  }
org.xdi.oxauth.model.common.Scope getScopeByDn(String dn)
Definition: ScopeService.java:89
String getDisplayName()
Definition: Scope.java:72
ScopeService scopeService
Definition: RegisterRestWebServiceImpl.java:75
String [] getScopes()
Definition: Client.java:1034
Definition: Scope.java:23

◆ getJSONObject()

JSONObject org.xdi.oxauth.register.ws.rs.RegisterRestWebServiceImpl.getJSONObject ( Client  client,
boolean  authorizationRequestCustomAllowedParameters 
) throws JSONException, StringEncrypter.EncryptionException
inlineprivate
591  {
592  JSONObject responseJsonObject = new JSONObject();
593 
594  Util.addToJSONObjectIfNotNull(responseJsonObject, RegisterResponseParam.CLIENT_ID.toString(), client.getClientId());
595  Util.addToJSONObjectIfNotNull(responseJsonObject, CLIENT_SECRET.toString(), clientService.decryptSecret(client.getClientSecret()));
596  Util.addToJSONObjectIfNotNull(responseJsonObject, RegisterResponseParam.REGISTRATION_ACCESS_TOKEN.toString(), client.getRegistrationAccessToken());
597  Util.addToJSONObjectIfNotNull(responseJsonObject, REGISTRATION_CLIENT_URI.toString(),
599  RegisterResponseParam.CLIENT_ID.toString() + "=" + client.getClientId());
600  responseJsonObject.put(CLIENT_ID_ISSUED_AT.toString(), client.getClientIdIssuedAt().getTime() / 1000);
601  responseJsonObject.put(CLIENT_SECRET_EXPIRES_AT.toString(), client.getClientSecretExpiresAt() != null && client.getClientSecretExpiresAt().getTime() > 0 ?
602  client.getClientSecretExpiresAt().getTime() / 1000 : 0);
603 
604  Util.addToJSONObjectIfNotNull(responseJsonObject, REDIRECT_URIS.toString(), client.getRedirectUris());
605  Util.addToJSONObjectIfNotNull(responseJsonObject, CLAIMS_REDIRECT_URIS.toString(), client.getClaimRedirectUris());
606  Util.addToJSONObjectIfNotNull(responseJsonObject, RESPONSE_TYPES.toString(), ResponseType.toStringArray(client.getResponseTypes()));
607  Util.addToJSONObjectIfNotNull(responseJsonObject, GRANT_TYPES.toString(), GrantType.toStringArray(client.getGrantTypes()));
608  Util.addToJSONObjectIfNotNull(responseJsonObject, APPLICATION_TYPE.toString(), client.getApplicationType());
609  Util.addToJSONObjectIfNotNull(responseJsonObject, CONTACTS.toString(), client.getContacts());
610  Util.addToJSONObjectIfNotNull(responseJsonObject, CLIENT_NAME.toString(), client.getClientName());
611  Util.addToJSONObjectIfNotNull(responseJsonObject, LOGO_URI.toString(), client.getLogoUri());
612  Util.addToJSONObjectIfNotNull(responseJsonObject, CLIENT_URI.toString(), client.getClientUri());
613  Util.addToJSONObjectIfNotNull(responseJsonObject, POLICY_URI.toString(), client.getPolicyUri());
614  Util.addToJSONObjectIfNotNull(responseJsonObject, TOS_URI.toString(), client.getTosUri());
615  Util.addToJSONObjectIfNotNull(responseJsonObject, JWKS_URI.toString(), client.getJwksUri());
616  Util.addToJSONObjectIfNotNull(responseJsonObject, SECTOR_IDENTIFIER_URI.toString(), client.getSectorIdentifierUri());
617  Util.addToJSONObjectIfNotNull(responseJsonObject, SUBJECT_TYPE.toString(), client.getSubjectType());
618  Util.addToJSONObjectIfNotNull(responseJsonObject, ID_TOKEN_SIGNED_RESPONSE_ALG.toString(), client.getIdTokenSignedResponseAlg());
619  Util.addToJSONObjectIfNotNull(responseJsonObject, ID_TOKEN_ENCRYPTED_RESPONSE_ALG.toString(), client.getIdTokenEncryptedResponseAlg());
620  Util.addToJSONObjectIfNotNull(responseJsonObject, ID_TOKEN_ENCRYPTED_RESPONSE_ENC.toString(), client.getIdTokenEncryptedResponseEnc());
621  Util.addToJSONObjectIfNotNull(responseJsonObject, USERINFO_SIGNED_RESPONSE_ALG.toString(), client.getUserInfoSignedResponseAlg());
622  Util.addToJSONObjectIfNotNull(responseJsonObject, USERINFO_ENCRYPTED_RESPONSE_ALG.toString(), client.getUserInfoEncryptedResponseAlg());
623  Util.addToJSONObjectIfNotNull(responseJsonObject, USERINFO_ENCRYPTED_RESPONSE_ENC.toString(), client.getUserInfoEncryptedResponseEnc());
624  Util.addToJSONObjectIfNotNull(responseJsonObject, REQUEST_OBJECT_SIGNING_ALG.toString(), client.getRequestObjectSigningAlg());
625  Util.addToJSONObjectIfNotNull(responseJsonObject, REQUEST_OBJECT_ENCRYPTION_ALG.toString(), client.getRequestObjectEncryptionAlg());
626  Util.addToJSONObjectIfNotNull(responseJsonObject, REQUEST_OBJECT_ENCRYPTION_ENC.toString(), client.getRequestObjectEncryptionEnc());
627  Util.addToJSONObjectIfNotNull(responseJsonObject, TOKEN_ENDPOINT_AUTH_METHOD.toString(), client.getTokenEndpointAuthMethod());
628  Util.addToJSONObjectIfNotNull(responseJsonObject, TOKEN_ENDPOINT_AUTH_SIGNING_ALG.toString(), client.getTokenEndpointAuthSigningAlg());
629  Util.addToJSONObjectIfNotNull(responseJsonObject, DEFAULT_MAX_AGE.toString(), client.getDefaultMaxAge());
630  Util.addToJSONObjectIfNotNull(responseJsonObject, REQUIRE_AUTH_TIME.toString(), client.getRequireAuthTime());
631  Util.addToJSONObjectIfNotNull(responseJsonObject, DEFAULT_ACR_VALUES.toString(), client.getDefaultAcrValues());
632  Util.addToJSONObjectIfNotNull(responseJsonObject, INITIATE_LOGIN_URI.toString(), client.getInitiateLoginUri());
633  Util.addToJSONObjectIfNotNull(responseJsonObject, POST_LOGOUT_REDIRECT_URIS.toString(), client.getPostLogoutRedirectUris());
634  Util.addToJSONObjectIfNotNull(responseJsonObject, REQUEST_URIS.toString(), client.getRequestUris());
635  Util.addToJSONObjectIfNotNull(responseJsonObject, AUTHORIZED_ORIGINS.toString(), client.getAuthorizedOrigins());
636  if (!Util.isNullOrEmpty(client.getJwks())) {
637  Util.addToJSONObjectIfNotNull(responseJsonObject, JWKS.toString(), new JSONObject(client.getJwks()));
638  }
639 
640  // Logout params
641  Util.addToJSONObjectIfNotNull(responseJsonObject, FRONT_CHANNEL_LOGOUT_URI.toString(), client.getFrontChannelLogoutUri());
642  Util.addToJSONObjectIfNotNull(responseJsonObject, FRONT_CHANNEL_LOGOUT_SESSION_REQUIRED.toString(), client.getFrontChannelLogoutSessionRequired());
643 
644  // Custom Params
645  String[] scopeNames = null;
646  String[] scopeDns = client.getScopes();
647  if (scopeDns != null) {
648  scopeNames = new String[scopeDns.length];
649  for (int i = 0; i < scopeDns.length; i++) {
650  Scope scope = scopeService.getScopeByDn(scopeDns[i]);
651  scopeNames[i] = scope.getDisplayName();
652  }
653  }
654 
655  if (authorizationRequestCustomAllowedParameters) {
656  Util.addToJSONObjectIfNotNull(responseJsonObject, SCOPES.toString(), scopeNames);
657  } else {
658  Util.addToJSONObjectIfNotNull(responseJsonObject, SCOPE.toString(), implode(scopeNames, " "));
659  }
660 
661  String[] claimNames = null;
662  String[] claimDns = client.getClaims();
663  if (claimDns != null) {
664  claimNames = new String[claimDns.length];
665  for (int i = 0; i < claimDns.length; i++) {
666  GluuAttribute gluuAttribute = attributeService.getAttributeByDn(claimDns[i]);
667  claimNames[i] = gluuAttribute.getOxAuthClaimName();
668  }
669  }
670 
671  if (claimNames != null && claimNames.length > 0) {
672  Util.addToJSONObjectIfNotNull(responseJsonObject, CLAIMS.toString(), implode(claimNames, " "));
673  }
674 
675  return responseJsonObject;
676  }
String [] getFrontChannelLogoutUri()
Definition: Client.java:257
Date getClientSecretExpiresAt()
Definition: Client.java:367
String getIdTokenEncryptedResponseAlg()
Definition: Client.java:735
org.xdi.oxauth.model.common.Scope getScopeByDn(String dn)
Definition: ScopeService.java:89
String [] getRedirectUris()
Definition: Client.java:387
ResponseType [] getResponseTypes()
Definition: Client.java:436
GluuAttribute getAttributeByDn(String dn)
Definition: AttributeService.java:47
String getApplicationType()
Definition: Client.java:479
String getClientId()
Definition: Client.java:275
AttributeService attributeService
Definition: RegisterRestWebServiceImpl.java:78
String getRegistrationAccessToken()
Definition: Client.java:330
String getUserInfoEncryptedResponseEnc()
Definition: Client.java:807
GrantType [] getGrantTypes()
Definition: Client.java:456
static void addToJSONObjectIfNotNull(JSONObject p_jsonObject, String key, Object value)
Definition: Util.java:118
String getUserInfoSignedResponseAlg()
Definition: Client.java:771
String getTokenEndpointAuthSigningAlg()
Definition: Client.java:901
Definition: GrantType.java:23
String [] getAuthorizedOrigins()
Definition: Client.java:1122
AppConfiguration appConfiguration
Definition: RegisterRestWebServiceImpl.java:97
String getRequestObjectEncryptionEnc()
Definition: Client.java:864
static boolean isNullOrEmpty(String string)
Definition: Util.java:245
String getDisplayName()
Definition: Scope.java:72
String getRequestObjectEncryptionAlg()
Definition: Client.java:844
String [] getContacts()
Definition: Client.java:502
String getInitiateLoginUri()
Definition: Client.java:983
Boolean getFrontChannelLogoutSessionRequired()
Definition: Client.java:239
Integer getDefaultMaxAge()
Definition: Client.java:921
String getJwksUri()
Definition: Client.java:629
String [] getPostLogoutRedirectUris()
Definition: Client.java:1002
String getPolicyUri()
Definition: Client.java:588
String getSectorIdentifierUri()
Definition: Client.java:680
String getTokenEndpointAuthMethod()
Definition: Client.java:883
String getIdTokenSignedResponseAlg()
Definition: Client.java:717
String [] getClaims()
Definition: Client.java:1042
ScopeService scopeService
Definition: RegisterRestWebServiceImpl.java:75
static String [] toStringArray(GrantType[] grantTypes)
Definition: GrantType.java:133
ClientService clientService
Definition: RegisterRestWebServiceImpl.java:83
String [] getRequestUris()
Definition: Client.java:1021
boolean getRequireAuthTime()
Definition: Client.java:942
static String [] toStringArray(ResponseType[] responseTypes)
Definition: ResponseType.java:130
String getClientUri()
Definition: Client.java:569
String getClientSecret()
Definition: Client.java:311
String [] getScopes()
Definition: Client.java:1034
Definition: Scope.java:23
Date getClientIdIssuedAt()
Definition: Client.java:349
String getClientName()
Definition: Client.java:521
String getJwks()
Definition: Client.java:655
String getLogoUri()
Definition: Client.java:551
String getSubjectType()
Definition: Client.java:699
String getUserInfoEncryptedResponseAlg()
Definition: Client.java:789
String getRequestObjectSigningAlg()
Definition: Client.java:825
String getTosUri()
Definition: Client.java:608
String decryptSecret(String encryptedClientSecret)
Definition: ClientService.java:390
Definition: ResponseType.java:34
Definition: Util.java:40
String getIdTokenEncryptedResponseEnc()
Definition: Client.java:753
String getRegistrationEndpoint()
Definition: AppConfiguration.java:480
String [] getClaimRedirectUris()
Definition: Client.java:417
String [] getDefaultAcrValues()
Definition: Client.java:963

◆ internalErrorResponse()

Response.ResponseBuilder org.xdi.oxauth.register.ws.rs.RegisterRestWebServiceImpl.internalErrorResponse ( )
inline
253  {
254  return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(
255  errorResponseFactory.getErrorAsJson(RegisterErrorResponseType.INVALID_CLIENT_METADATA));
256  }
String getErrorAsJson(IErrorType p_type)
Definition: ErrorResponseFactory.java:86
ErrorResponseFactory errorResponseFactory
Definition: RegisterRestWebServiceImpl.java:72

◆ processApplicationAttributes()

boolean org.xdi.oxauth.register.ws.rs.RegisterRestWebServiceImpl.processApplicationAttributes ( Client  p_client,
String  attr,
final List< String >  parameterValues 
)
inlineprivate
715  {
716  if (StringHelper.equalsIgnoreCase("oxAuthTrustedClient", attr)) {
717  boolean trustedClient = StringHelper.toBoolean(parameterValues.get(0), false);
718  p_client.setTrustedClient(trustedClient);
719 
720  return true;
721  } else if (StringHelper.equalsIgnoreCase("oxIncludeClaimsInIdToken", attr)) {
722  boolean includeClaimsInIdToken = StringHelper.toBoolean(parameterValues.get(0), false);
723  p_client.setIncludeClaimsInIdToken(includeClaimsInIdToken);
724 
725  return true;
726  }
727 
728  return false;
729  }
void setIncludeClaimsInIdToken(boolean includeClaimsInIdToken)
Definition: Client.java:1086
void setTrustedClient(boolean trustedClient)
Definition: Client.java:1054

◆ putCustomStuffIntoObject()

void org.xdi.oxauth.register.ws.rs.RegisterRestWebServiceImpl.putCustomStuffIntoObject ( Client  p_client,
JSONObject  p_requestObject 
) throws JSONException
inlineprivate

Puts custom object class and custom attributes in client object for persistence.

引数
p_clientclient object
p_requestObjectrequest object
684  {
685  // custom object class
687  if (StringUtils.isNotBlank(customOC)) {
688  p_client.setCustomObjectClasses(new String[]{customOC});
689  }
690 
691  // custom attributes (custom attributes must be in custom object class)
692  final List<String> attrList = appConfiguration.getDynamicRegistrationCustomAttributes();
693  if (attrList != null && !attrList.isEmpty()) {
694  for (String attr : attrList) {
695  if (p_requestObject.has(attr)) {
696  final JSONArray parameterValuesJsonArray = p_requestObject.optJSONArray(attr);
697  final List<String> parameterValues = parameterValuesJsonArray != null ?
698  toList(parameterValuesJsonArray) :
699  Arrays.asList(p_requestObject.getString(attr));
700  if (parameterValues != null && !parameterValues.isEmpty()) {
701  try {
702  boolean processed = processApplicationAttributes(p_client, attr, parameterValues);
703  if (!processed) {
704  p_client.getCustomAttributes().add(new CustomAttribute(attr, parameterValues));
705  }
706  } catch (Exception e) {
707  log.debug(e.getMessage(), e);
708  }
709  }
710  }
711  }
712  }
713  }
List< CustomAttribute > getCustomAttributes()
Definition: Client.java:1098
void setCustomObjectClasses(String[] p_customObjectClasses)
Definition: Client.java:1110
AppConfiguration appConfiguration
Definition: RegisterRestWebServiceImpl.java:97
Logger log
Definition: RegisterRestWebServiceImpl.java:68
String getDynamicRegistrationCustomObjectClass()
Definition: AppConfiguration.java:960
boolean processApplicationAttributes(Client p_client, String attr, final List< String > parameterValues)
Definition: RegisterRestWebServiceImpl.java:715
List< String > getDynamicRegistrationCustomAttributes()
Definition: AppConfiguration.java:661

◆ registerClientImpl()

Response org.xdi.oxauth.register.ws.rs.RegisterRestWebServiceImpl.registerClientImpl ( String  requestParams,
HttpServletRequest  httpRequest,
SecurityContext  securityContext 
)
inlineprivate
112  {
113  Response.ResponseBuilder builder = Response.ok();
115  try {
116  final RegisterRequest r = RegisterRequest.fromJson(requestParams, appConfiguration.getLegacyDynamicRegistrationScopeParam());
117 
118  log.info("Attempting to register client: applicationType = {}, clientName = {}, redirectUris = {}, isSecure = {}, sectorIdentifierUri = {}, defaultAcrValues = {}",
119  r.getApplicationType(), r.getClientName(), r.getRedirectUris(), securityContext.isSecure(), r.getSectorIdentifierUri(), r.getDefaultAcrValues());
120  log.trace("Registration request = {}", requestParams);
121 
123 
124  if (r.getSubjectType() == null) {
126  if (defaultSubjectType != null) {
127  r.setSubjectType(defaultSubjectType);
128  } else if (appConfiguration.getSubjectTypesSupported().contains(SubjectType.PUBLIC.toString())) {
129  r.setSubjectType(SubjectType.PUBLIC);
130  } else if (appConfiguration.getSubjectTypesSupported().contains(SubjectType.PAIRWISE.toString())) {
131  r.setSubjectType(SubjectType.PAIRWISE);
132  }
133  }
134 
135  if (r.getIdTokenSignedResponseAlg() == null) {
137  }
138  if (r.getAccessTokenSigningAlg() == null) {
140  }
141 
142  if (r.getClaimsRedirectUris() != null && !r.getClaimsRedirectUris().isEmpty()) {
143  if (!registerParamsValidator.validateRedirectUris(r.getApplicationType(), r.getSubjectType(), r.getClaimsRedirectUris(), r.getSectorIdentifierUri())) {
144  log.error("Value of one or more claims_redirect_uris is invalid, claims_redirect_uris: " + r.getClaimsRedirectUris());
145  throw new WebApplicationException(Response.status(Response.Status.BAD_REQUEST)
146  .entity(errorResponseFactory.getErrorAsJson(RegisterErrorResponseType.INVALID_CLAIMS_REDIRECT_URI))
147  .build());
148  }
149  }
150 
151  if (registerParamsValidator.validateParamsClientRegister(r.getApplicationType(), r.getSubjectType(),
152  r.getRedirectUris(), r.getSectorIdentifierUri())) {
153  if (!registerParamsValidator.validateRedirectUris(r.getApplicationType(), r.getSubjectType(),
154  r.getRedirectUris(), r.getSectorIdentifierUri())) {
155  builder = Response.status(Response.Status.BAD_REQUEST.getStatusCode());
156  builder.entity(errorResponseFactory.getErrorAsJson(RegisterErrorResponseType.INVALID_REDIRECT_URI));
157  } else {
158  registerParamsValidator.validateLogoutUri(r.getFrontChannelLogoutUris(), r.getRedirectUris(), errorResponseFactory);
159 
160  String clientsBaseDN = staticConfiguration.getBaseDn().getClients();
161 
162  String inum = inumService.generateClientInum();
163  String generatedClientSecret = UUID.randomUUID().toString();
164 
165  final Client client = new Client();
166  client.setDn("inum=" + inum + "," + clientsBaseDN);
167  client.setClientId(inum);
168  client.setClientSecret(clientService.encryptSecret(generatedClientSecret));
170  client.setIdTokenTokenBindingCnf(r.getIdTokenTokenBindingCnf());
171 
172  final Calendar calendar = new GregorianCalendar(TimeZone.getTimeZone("UTC"));
173  client.setClientIdIssuedAt(calendar.getTime());
174 
176  calendar.add(Calendar.SECOND, appConfiguration.getDynamicRegistrationExpirationTime());
177  client.setClientSecretExpiresAt(calendar.getTime());
178  }
179 
180  if (StringUtils.isBlank(r.getClientName()) && r.getRedirectUris() != null && !r.getRedirectUris().isEmpty()) {
181  try {
182  URI redUri = new URI(r.getRedirectUris().get(0));
183  client.setClientName(redUri.getHost());
184  } catch (Exception e) {
185  //ignore
186  log.error(e.getMessage(), e);
187  client.setClientName("Unknown");
188  }
189  }
190 
191  updateClientFromRequestObject(client, r, false);
192 
193  boolean registerClient = true;
196  }
197 
198  if (registerClient) {
199  Date currentTime = Calendar.getInstance().getTime();
200  client.setLastAccessTime(currentTime);
201  client.setLastLogonTime(currentTime);
202 
203  Boolean persistClientAuthorizations = appConfiguration.getDynamicRegistrationPersistClientAuthorizations();
204  client.setPersistClientAuthorizations(persistClientAuthorizations != null ? persistClientAuthorizations : false);
205 
206  clientService.persist(client);
207 
208  JSONObject jsonObject = getJSONObject(client, appConfiguration.getLegacyDynamicRegistrationScopeParam());
209  builder.entity(jsonObject.toString(4).replace("\\/", "/"));
210 
211  log.info("Client registered: clientId = {}, applicationType = {}, clientName = {}, redirectUris = {}, sectorIdentifierUri = {}",
212  client.getClientId(), client.getApplicationType(), client.getClientName(), client.getRedirectUris(), client.getSectorIdentifierUri());
213 
214  oAuth2AuditLog.setClientId(client.getClientId());
215  oAuth2AuditLog.setScope(clientScopesToString(client));
216  oAuth2AuditLog.setSuccess(true);
217  } else {
218  log.trace("Client parameters are invalid, returns invalid_request error.");
219  builder = Response.status(Response.Status.BAD_REQUEST).
220  entity(errorResponseFactory.getErrorAsJson(RegisterErrorResponseType.INVALID_CLIENT_METADATA));
221  }
222  }
223  } else {
224  log.trace("Client parameters are invalid, returns invalid_request error.");
225  builder = Response.status(Response.Status.BAD_REQUEST).
226  entity(errorResponseFactory.getErrorAsJson(RegisterErrorResponseType.INVALID_CLIENT_METADATA));
227  }
228  } else {
229  log.info("Dynamic client registration is disabled.");
230  builder = Response.status(Response.Status.BAD_REQUEST).
231  entity(errorResponseFactory.getErrorAsJson(RegisterErrorResponseType.ACCESS_DENIED));
232  }
233  } catch (StringEncrypter.EncryptionException e) {
234  builder = internalErrorResponse();
235  log.error(e.getMessage(), e);
236  } catch (JSONException e) {
237  builder = internalErrorResponse();
238  log.error(e.getMessage(), e);
239  } catch (WebApplicationException e) {
240  log.error(e.getMessage(), e);
241  throw e;
242  } catch (Exception e) {
243  builder = internalErrorResponse();
244  log.error(e.getMessage(), e);
245  }
246 
247  builder.cacheControl(ServerUtil.cacheControl(true, false));
248  builder.header("Pragma", "no-cache");
249  applicationAuditLogger.sendMessage(oAuth2AuditLog);
250  return builder.build();
251  }
String getErrorAsJson(IErrorType p_type)
Definition: ErrorResponseFactory.java:86
void persist(Client client)
Definition: ClientService.java:91
int getDynamicRegistrationExpirationTime()
Definition: AppConfiguration.java:896
void setClientId(String clientId)
Definition: OAuth2AuditLog.java:67
JSONObject getJSONObject(Client client, boolean authorizationRequestCustomAllowedParameters)
Definition: RegisterRestWebServiceImpl.java:591
PUBLIC
Definition: SubjectType.java:15
void sendMessage(OAuth2AuditLog oAuth2AuditLog)
Definition: ApplicationAuditLogger.java:78
void setClientIdIssuedAt(Date clientIdIssuedAt)
Definition: Client.java:358
Definition: HandleTokenFactory.java:28
String [] getRedirectUris()
Definition: Client.java:387
PAIRWISE
Definition: SubjectType.java:14
String getDefaultSignatureAlgorithm()
Definition: AppConfiguration.java:856
void setClientSecretExpiresAt(Date clientSecretExpiresAt)
Definition: Client.java:376
String getApplicationType()
Definition: Client.java:479
String getClientId()
Definition: Client.java:275
void setIdTokenTokenBindingCnf(String idTokenTokenBindingCnf)
Definition: Client.java:538
void setClientId(String clientId)
Definition: Client.java:284
void setDn(String dn)
Definition: Client.java:230
String generateClientInum()
Definition: InumService.java:37
void validateLogoutUri(List< String > logoutUris, List< String > redirectUris, ErrorResponseFactory errorResponseFactory)
Definition: RegisterParamsValidator.java:222
String encryptSecret(String clientSecret)
Definition: ClientService.java:394
String getDefaultSubjectType()
Definition: AppConfiguration.java:565
Definition: SignatureAlgorithm.java:20
static String getIpAddress(HttpServletRequest httpRequest)
Definition: ServerUtil.java:188
void setRegistrationAccessToken(String registrationAccessToken)
Definition: Client.java:340
List< String > getSubjectTypesSupported()
Definition: AppConfiguration.java:557
AppConfiguration appConfiguration
Definition: RegisterRestWebServiceImpl.java:97
void setLastAccessTime(Date lastAccessTime)
Definition: Client.java:1062
boolean validateParamsClientRegister(ApplicationType applicationType, SubjectType subjectType, List< String > redirectUris, String sectorIdentifierUrl)
Definition: RegisterParamsValidator.java:67
void setClientSecret(String clientSecret)
Definition: Client.java:320
String getClients()
Definition: BaseDnConfiguration.java:93
static String generateHandleToken()
Definition: HandleTokenFactory.java:41
InumService inumService
Definition: RegisterRestWebServiceImpl.java:81
Definition: SubjectType.java:12
RegisterParamsValidator registerParamsValidator
Definition: RegisterRestWebServiceImpl.java:94
String getSectorIdentifierUri()
Definition: Client.java:680
static SubjectType fromString(String param)
Definition: SubjectType.java:30
void setClientName(String clientName)
Definition: Client.java:530
StaticConfiguration staticConfiguration
Definition: RegisterRestWebServiceImpl.java:100
Logger log
Definition: RegisterRestWebServiceImpl.java:68
Definition: OAuth2AuditLog.java:10
ClientService clientService
Definition: RegisterRestWebServiceImpl.java:83
boolean validateRedirectUris(ApplicationType applicationType, SubjectType subjectType, List< String > redirectUris, String sectorIdentifierUrl)
Definition: RegisterParamsValidator.java:98
void updateClientFromRequestObject(Client p_client, RegisterRequest requestObject, boolean update)
Definition: RegisterRestWebServiceImpl.java:260
CLIENT_REGISTRATION
Definition: Action.java:4
void setPersistClientAuthorizations(boolean persistClientAuthorizations)
Definition: Client.java:1078
Boolean getLegacyDynamicRegistrationScopeParam()
Definition: AppConfiguration.java:1385
String getClientName()
Definition: Client.java:521
Definition: ServerUtil.java:50
Boolean getDynamicRegistrationEnabled()
Definition: AppConfiguration.java:888
static CacheControl cacheControl(boolean p_noStore)
Definition: ServerUtil.java:84
ErrorResponseFactory errorResponseFactory
Definition: RegisterRestWebServiceImpl.java:72
void setSuccess(boolean success)
Definition: OAuth2AuditLog.java:59
boolean executeExternalCreateClientMethods(RegisterRequest registerRequest, Client client)
Definition: ExternalDynamicClientRegistrationService.java:53
Definition: Action.java:3
void setScope(String scope)
Definition: OAuth2AuditLog.java:83
ExternalDynamicClientRegistrationService externalDynamicClientRegistrationService
Definition: RegisterRestWebServiceImpl.java:91
Boolean getDynamicRegistrationPersistClientAuthorizations()
Definition: AppConfiguration.java:904
Response.ResponseBuilder internalErrorResponse()
Definition: RegisterRestWebServiceImpl.java:253
BaseDnConfiguration getBaseDn()
Definition: StaticConfiguration.java:32
static List< SignatureAlgorithm > fromString(String[] params)
Definition: SignatureAlgorithm.java:83
void setLastLogonTime(Date lastLogonTime)
Definition: Client.java:1070
String clientScopesToString(Client client)
Definition: RegisterRestWebServiceImpl.java:731
ApplicationAuditLogger applicationAuditLogger
Definition: RegisterRestWebServiceImpl.java:70

◆ requestClientRead() [1/2]

Response org.xdi.oxauth.register.ws.rs.RegisterRestWebService.requestClientRead ( @QueryParam("client_id") @ApiParam(value="Client ID that identifies client.", required=true) String  clientId,
@HeaderParam("Authorization") String  authorization,
@Context HttpServletRequest  httpRequest,
@Context SecurityContext  securityContext 
)
inherited

This operation retrieves the Client Metadata for a previously registered client.

引数
clientIdUnique Client identifier.
securityContextAn injectable interface that provides access to security related information.
戻り値
response

◆ requestClientRead() [2/2]

Response org.xdi.oxauth.register.ws.rs.RegisterRestWebServiceImpl.requestClientRead ( String  clientId,
String  authorization,
HttpServletRequest  httpRequest,
SecurityContext  securityContext 
)
inline
537  {
538  String accessToken = tokenService.getTokenFromAuthorizationParameter(authorization);
539  log.debug("Attempting to read client: clientId = {}, registrationAccessToken = {} isSecure = {}",
540  clientId, accessToken, securityContext.isSecure());
541  Response.ResponseBuilder builder = Response.ok();
542 
543  OAuth2AuditLog oAuth2AuditLog = new OAuth2AuditLog(ServerUtil.getIpAddress(httpRequest), Action.CLIENT_READ);
544  oAuth2AuditLog.setClientId(clientId);
545  try {
547  if (registerParamsValidator.validateParamsClientRead(clientId, accessToken)) {
548  Client client = clientService.getClient(clientId, accessToken);
549  if (client != null) {
550  oAuth2AuditLog.setScope(clientScopesToString(client));
551  oAuth2AuditLog.setSuccess(true);
552  builder.entity(clientAsEntity(client));
553  } else {
554  log.trace("The Access Token is not valid for the Client ID, returns invalid_token error.");
555  builder = Response.status(Response.Status.BAD_REQUEST.getStatusCode());
556  builder.entity(errorResponseFactory.getErrorAsJson(RegisterErrorResponseType.INVALID_TOKEN));
557  }
558  } else {
559  log.trace("Client parameters are invalid.");
560  builder = Response.status(Response.Status.BAD_REQUEST);
561  builder.entity(errorResponseFactory.getErrorAsJson(RegisterErrorResponseType.INVALID_CLIENT_METADATA));
562  }
563  } else {
564  builder = Response.status(Response.Status.BAD_REQUEST);
565  builder.entity(errorResponseFactory.getErrorAsJson(RegisterErrorResponseType.ACCESS_DENIED));
566  }
567  } catch (JSONException e) {
568  builder = Response.status(500);
569  builder.entity(errorResponseFactory.getErrorAsJson(RegisterErrorResponseType.INVALID_CLIENT_METADATA));
570  log.error(e.getMessage(), e);
571  } catch (StringEncrypter.EncryptionException e) {
572  builder = Response.status(500);
573  builder.entity(errorResponseFactory.getErrorAsJson(RegisterErrorResponseType.INVALID_CLIENT_METADATA));
574  log.error(e.getMessage(), e);
575  }
576 
577  CacheControl cacheControl = new CacheControl();
578  cacheControl.setNoTransform(false);
579  cacheControl.setNoStore(true);
580  builder.cacheControl(cacheControl);
581  builder.header("Pragma", "no-cache");
582  applicationAuditLogger.sendMessage(oAuth2AuditLog);
583  return builder.build();
584  }
String getErrorAsJson(IErrorType p_type)
Definition: ErrorResponseFactory.java:86
void setClientId(String clientId)
Definition: OAuth2AuditLog.java:67
void sendMessage(OAuth2AuditLog oAuth2AuditLog)
Definition: ApplicationAuditLogger.java:78
boolean validateParamsClientRead(String clientId, String accessToken)
Definition: RegisterParamsValidator.java:86
static String getIpAddress(HttpServletRequest httpRequest)
Definition: ServerUtil.java:188
AppConfiguration appConfiguration
Definition: RegisterRestWebServiceImpl.java:97
RegisterParamsValidator registerParamsValidator
Definition: RegisterRestWebServiceImpl.java:94
String getTokenFromAuthorizationParameter(String authorizationParameter)
Definition: TokenService.java:30
Logger log
Definition: RegisterRestWebServiceImpl.java:68
Definition: OAuth2AuditLog.java:10
ClientService clientService
Definition: RegisterRestWebServiceImpl.java:83
String clientAsEntity(Client p_client)
Definition: RegisterRestWebServiceImpl.java:586
Definition: ServerUtil.java:50
Boolean getDynamicRegistrationEnabled()
Definition: AppConfiguration.java:888
ErrorResponseFactory errorResponseFactory
Definition: RegisterRestWebServiceImpl.java:72
void setSuccess(boolean success)
Definition: OAuth2AuditLog.java:59
Set< Client > getClient(Collection< String > clientIds, boolean silent)
Definition: ClientService.java:123
TokenService tokenService
Definition: RegisterRestWebServiceImpl.java:85
Definition: Action.java:3
void setScope(String scope)
Definition: OAuth2AuditLog.java:83
CLIENT_READ
Definition: Action.java:6
String clientScopesToString(Client client)
Definition: RegisterRestWebServiceImpl.java:731
ApplicationAuditLogger applicationAuditLogger
Definition: RegisterRestWebServiceImpl.java:70

◆ requestClientUpdate() [1/2]

Response org.xdi.oxauth.register.ws.rs.RegisterRestWebService.requestClientUpdate ( @ApiParam(value="Request parameters as JSON object with data described by Connect Client Registration Specification. ", required=true) String  requestParams,
@QueryParam("client_id") @ApiParam(value="Client ID that identifies client that must be updated by this request.", required=true) String  clientId,
@HeaderParam("Authorization") String  authorization,
@Context HttpServletRequest  httpRequest,
@Context SecurityContext  securityContext 
)
inherited

This operation updates the Client Metadata for a previously registered client.

引数
requestParamsrequest parameters
clientIdclient id
authorizationAccess Token that is used at the Client Configuration Endpoint
httpRequesthttp request object
securityContextAn injectable interface that provides access to security related information.
戻り値
response

◆ requestClientUpdate() [2/2]

Response org.xdi.oxauth.register.ws.rs.RegisterRestWebServiceImpl.requestClientUpdate ( String  requestParams,
String  clientId,
@HeaderParam("Authorization") String  authorization,
@Context HttpServletRequest  httpRequest,
@Context SecurityContext  securityContext 
)
inline
465  {
466  OAuth2AuditLog oAuth2AuditLog = new OAuth2AuditLog(ServerUtil.getIpAddress(httpRequest), Action.CLIENT_UPDATE);
467  oAuth2AuditLog.setClientId(clientId);
468  try {
469  log.debug("Attempting to UPDATE client, client_id: {}, requestParams = {}, isSecure = {}",
470  clientId, requestParams, securityContext.isSecure());
471  final String accessToken = tokenService.getTokenFromAuthorizationParameter(authorization);
472 
473  if (StringUtils.isNotBlank(accessToken) && StringUtils.isNotBlank(clientId) && StringUtils.isNotBlank(requestParams)) {
474  final RegisterRequest request = RegisterRequest.fromJson(requestParams, appConfiguration.getLegacyDynamicRegistrationScopeParam());
475  if (request != null) {
476  boolean redirectUrisValidated = true;
477  if (request.getRedirectUris() != null && !request.getRedirectUris().isEmpty()) {
478  redirectUrisValidated = registerParamsValidator.validateRedirectUris(request.getApplicationType(), request.getSubjectType(),
479  request.getRedirectUris(), request.getSectorIdentifierUri());
480  }
481 
482  if (redirectUrisValidated) {
483  if (request.getSubjectType() != null
484  && !appConfiguration.getSubjectTypesSupported().contains(request.getSubjectType().toString())) {
485  log.debug("Client UPDATE : parameter subject_type is invalid. Returns BAD_REQUEST response.");
486  applicationAuditLogger.sendMessage(oAuth2AuditLog);
487  return Response.status(Response.Status.BAD_REQUEST).
488  entity(errorResponseFactory.getErrorAsJson(RegisterErrorResponseType.INVALID_CLIENT_METADATA)).build();
489  }
490 
491  final Client client = clientService.getClient(clientId, accessToken);
492  if (client != null) {
493  updateClientFromRequestObject(client, request, true);
494 
495  boolean updateClient = true;
498  }
499 
500  if (updateClient) {
501  clientService.merge(client);
502 
503  oAuth2AuditLog.setScope(clientScopesToString(client));
504  oAuth2AuditLog.setSuccess(true);
505  applicationAuditLogger.sendMessage(oAuth2AuditLog);
506  return Response.status(Response.Status.OK).entity(clientAsEntity(client)).build();
507  } else {
508  log.trace("The Access Token is not valid for the Client ID, returns invalid_token error.");
509  applicationAuditLogger.sendMessage(oAuth2AuditLog);
510  return Response.status(Response.Status.BAD_REQUEST).
511  entity(errorResponseFactory.getErrorAsJson(RegisterErrorResponseType.INVALID_TOKEN)).build();
512  }
513  } else {
514  log.trace("The Access Token is not valid for the Client ID, returns invalid_token error.");
515  applicationAuditLogger.sendMessage(oAuth2AuditLog);
516  return Response.status(Response.Status.BAD_REQUEST).
517  entity(errorResponseFactory.getErrorAsJson(RegisterErrorResponseType.INVALID_TOKEN)).build();
518  }
519  }
520  }
521  }
522 
523  log.debug("Client UPDATE : parameters are invalid. Returns BAD_REQUEST response.");
524  applicationAuditLogger.sendMessage(oAuth2AuditLog);
525  return Response.status(Response.Status.BAD_REQUEST).
526  entity(errorResponseFactory.getErrorAsJson(RegisterErrorResponseType.INVALID_CLIENT_METADATA)).build();
527 
528  } catch (Exception e) {
529  log.error(e.getMessage(), e);
530  }
531  applicationAuditLogger.sendMessage(oAuth2AuditLog);
532  return internalErrorResponse().build();
533  }
String getErrorAsJson(IErrorType p_type)
Definition: ErrorResponseFactory.java:86
void setClientId(String clientId)
Definition: OAuth2AuditLog.java:67
void merge(Client client)
Definition: ClientService.java:95
void sendMessage(OAuth2AuditLog oAuth2AuditLog)
Definition: ApplicationAuditLogger.java:78
boolean executeExternalUpdateClientMethods(RegisterRequest registerRequest, Client client)
Definition: ExternalDynamicClientRegistrationService.java:81
static String getIpAddress(HttpServletRequest httpRequest)
Definition: ServerUtil.java:188
List< String > getSubjectTypesSupported()
Definition: AppConfiguration.java:557
AppConfiguration appConfiguration
Definition: RegisterRestWebServiceImpl.java:97
RegisterParamsValidator registerParamsValidator
Definition: RegisterRestWebServiceImpl.java:94
String getTokenFromAuthorizationParameter(String authorizationParameter)
Definition: TokenService.java:30
Logger log
Definition: RegisterRestWebServiceImpl.java:68
Definition: OAuth2AuditLog.java:10
CLIENT_UPDATE
Definition: Action.java:5
ClientService clientService
Definition: RegisterRestWebServiceImpl.java:83
boolean validateRedirectUris(ApplicationType applicationType, SubjectType subjectType, List< String > redirectUris, String sectorIdentifierUrl)
Definition: RegisterParamsValidator.java:98
void updateClientFromRequestObject(Client p_client, RegisterRequest requestObject, boolean update)
Definition: RegisterRestWebServiceImpl.java:260
Boolean getLegacyDynamicRegistrationScopeParam()
Definition: AppConfiguration.java:1385
String clientAsEntity(Client p_client)
Definition: RegisterRestWebServiceImpl.java:586
Definition: ServerUtil.java:50
ErrorResponseFactory errorResponseFactory
Definition: RegisterRestWebServiceImpl.java:72
void setSuccess(boolean success)
Definition: OAuth2AuditLog.java:59
Set< Client > getClient(Collection< String > clientIds, boolean silent)
Definition: ClientService.java:123
TokenService tokenService
Definition: RegisterRestWebServiceImpl.java:85
Definition: Action.java:3
void setScope(String scope)
Definition: OAuth2AuditLog.java:83
ExternalDynamicClientRegistrationService externalDynamicClientRegistrationService
Definition: RegisterRestWebServiceImpl.java:91
Response.ResponseBuilder internalErrorResponse()
Definition: RegisterRestWebServiceImpl.java:253
String clientScopesToString(Client client)
Definition: RegisterRestWebServiceImpl.java:731
ApplicationAuditLogger applicationAuditLogger
Definition: RegisterRestWebServiceImpl.java:70

◆ requestRegister() [1/2]

Response org.xdi.oxauth.register.ws.rs.RegisterRestWebService.requestRegister ( @ApiParam(value="Request parameters as JSON object with data described by Connect Client Registration Specification. ", required=true) String  requestParams,
@HeaderParam("Authorization") String  authorization,
@Context HttpServletRequest  httpRequest,
@Context SecurityContext  securityContext 
)
inherited

In order for an OpenID Connect client to utilize OpenID services for a user, the client needs to register with the OpenID Provider to acquire a client ID and shared secret.

引数
requestParamsrequest parameters
authorizationauthorization
httpRequesthttp request object
securityContextAn injectable interface that provides access to security related information.
戻り値
response

◆ requestRegister() [2/2]

Response org.xdi.oxauth.register.ws.rs.RegisterRestWebServiceImpl.requestRegister ( String  requestParams,
String  authorization,
HttpServletRequest  httpRequest,
SecurityContext  securityContext 
)
inline
103  {
104  com.codahale.metrics.Timer.Context timerContext = metricService.getTimer(MetricType.DYNAMIC_CLIENT_REGISTRATION_RATE).time();
105  try {
106  return registerClientImpl(requestParams, httpRequest, securityContext);
107  } finally {
108  timerContext.stop();
109  }
110  }
MetricService metricService
Definition: RegisterRestWebServiceImpl.java:88
Response registerClientImpl(String requestParams, HttpServletRequest httpRequest, SecurityContext securityContext)
Definition: RegisterRestWebServiceImpl.java:112

◆ updateClientFromRequestObject()

void org.xdi.oxauth.register.ws.rs.RegisterRestWebServiceImpl.updateClientFromRequestObject ( Client  p_client,
RegisterRequest  requestObject,
boolean  update 
) throws JSONException
inlineprivate
260  {
261  List<String> redirectUris = requestObject.getRedirectUris();
262  if (redirectUris != null && !redirectUris.isEmpty()) {
263  redirectUris = new ArrayList<String>(new HashSet<String>(redirectUris)); // Remove repeated elements
264  p_client.setRedirectUris(redirectUris.toArray(new String[redirectUris.size()]));
265  }
266  List<String> claimsRedirectUris = requestObject.getClaimsRedirectUris();
267  if (claimsRedirectUris != null && !claimsRedirectUris.isEmpty()) {
268  claimsRedirectUris = new ArrayList<String>(new HashSet<String>(claimsRedirectUris)); // Remove repeated elements
269  p_client.setClaimRedirectUris(claimsRedirectUris.toArray(new String[claimsRedirectUris.size()]));
270  }
271  if (requestObject.getApplicationType() != null) {
272  p_client.setApplicationType(requestObject.getApplicationType().toString());
273  }
274  if (StringUtils.isNotBlank(requestObject.getClientName())) {
275  p_client.setClientName(requestObject.getClientName());
276  }
277  if (StringUtils.isNotBlank(requestObject.getSectorIdentifierUri())) {
278  p_client.setSectorIdentifierUri(requestObject.getSectorIdentifierUri());
279  }
280 
281  Set<ResponseType> responseTypeSet = new HashSet<ResponseType>();
282  responseTypeSet.addAll(requestObject.getResponseTypes());
283 
284  Set<GrantType> grantTypeSet = new HashSet<GrantType>();
285  grantTypeSet.addAll(requestObject.getGrantTypes());
286 
287  if (responseTypeSet.size() == 0 && grantTypeSet.size() == 0) {
288  responseTypeSet.add(ResponseType.CODE);
289  }
290  if (responseTypeSet.contains(ResponseType.CODE)) {
291  grantTypeSet.add(GrantType.AUTHORIZATION_CODE);
292  grantTypeSet.add(GrantType.REFRESH_TOKEN);
293  }
294  if (responseTypeSet.contains(ResponseType.TOKEN) || responseTypeSet.contains(ResponseType.ID_TOKEN)) {
295  grantTypeSet.add(GrantType.IMPLICIT);
296  }
297  if (grantTypeSet.contains(GrantType.AUTHORIZATION_CODE)) {
298  responseTypeSet.add(ResponseType.CODE);
299  grantTypeSet.add(GrantType.REFRESH_TOKEN);
300  }
301  if (grantTypeSet.contains(GrantType.IMPLICIT)) {
302  responseTypeSet.add(ResponseType.TOKEN);
303  }
304 
305  Set<Set<ResponseType>> responseTypesSupported = appConfiguration.getResponseTypesSupported();
306  Set<GrantType> grantTypesSupported = appConfiguration.getGrantTypesSupported();
307 
308  if (!responseTypesSupported.contains(responseTypeSet)) {
309  responseTypeSet.clear();
310  }
311 
312  grantTypeSet.retainAll(grantTypesSupported);
313 
314  Set<GrantType> dynamicGrantTypeDefault = appConfiguration.getDynamicGrantTypeDefault();
315  grantTypeSet.retainAll(dynamicGrantTypeDefault);
316 
317  p_client.setResponseTypes(responseTypeSet.toArray(new ResponseType[responseTypeSet.size()]));
318  if (!update) {
319  p_client.setGrantTypes(grantTypeSet.toArray(new GrantType[grantTypeSet.size()]));
321  p_client.setGrantTypes(grantTypeSet.toArray(new GrantType[grantTypeSet.size()]));
322  }
323 
324  List<String> contacts = requestObject.getContacts();
325  if (contacts != null && !contacts.isEmpty()) {
326  contacts = new ArrayList<String>(new HashSet<String>(contacts)); // Remove repeated elements
327  p_client.setContacts(contacts.toArray(new String[contacts.size()]));
328  }
329  if (StringUtils.isNotBlank(requestObject.getLogoUri())) {
330  p_client.setLogoUri(requestObject.getLogoUri());
331  }
332  if (StringUtils.isNotBlank(requestObject.getClientUri())) {
333  p_client.setClientUri(requestObject.getClientUri());
334  }
335  if (StringUtils.isNotBlank(requestObject.getPolicyUri())) {
336  p_client.setPolicyUri(requestObject.getPolicyUri());
337  }
338  if (StringUtils.isNotBlank(requestObject.getTosUri())) {
339  p_client.setTosUri(requestObject.getTosUri());
340  }
341  if (StringUtils.isNotBlank(requestObject.getJwksUri())) {
342  p_client.setJwksUri(requestObject.getJwksUri());
343  }
344  if (StringUtils.isNotBlank(requestObject.getJwks())) {
345  p_client.setJwks(requestObject.getJwks());
346  }
347  if (requestObject.getSubjectType() != null) {
348  p_client.setSubjectType(requestObject.getSubjectType().toString());
349  }
350  if (requestObject.getAccessTokenAsJwt() != null) {
351  p_client.setAccessTokenAsJwt(requestObject.getAccessTokenAsJwt());
352  }
353  if (requestObject.getAccessTokenSigningAlg() != null) {
354  p_client.setAccessTokenSigningAlg(requestObject.getAccessTokenSigningAlg().toString());
355  }
356  if (requestObject.getIdTokenSignedResponseAlg() != null) {
357  p_client.setIdTokenSignedResponseAlg(requestObject.getIdTokenSignedResponseAlg().toString());
358  }
359  if (requestObject.getIdTokenEncryptedResponseAlg() != null) {
360  p_client.setIdTokenEncryptedResponseAlg(requestObject.getIdTokenEncryptedResponseAlg().toString());
361  }
362  if (requestObject.getIdTokenEncryptedResponseEnc() != null) {
363  p_client.setIdTokenEncryptedResponseEnc(requestObject.getIdTokenEncryptedResponseEnc().toString());
364  }
365  if (requestObject.getUserInfoSignedResponseAlg() != null) {
366  p_client.setUserInfoSignedResponseAlg(requestObject.getUserInfoSignedResponseAlg().toString());
367  }
368  if (requestObject.getUserInfoEncryptedResponseAlg() != null) {
369  p_client.setUserInfoEncryptedResponseAlg(requestObject.getUserInfoEncryptedResponseAlg().toString());
370  }
371  if (requestObject.getUserInfoEncryptedResponseEnc() != null) {
372  p_client.setUserInfoEncryptedResponseEnc(requestObject.getUserInfoEncryptedResponseEnc().toString());
373  }
374  if (requestObject.getRequestObjectSigningAlg() != null) {
375  p_client.setRequestObjectSigningAlg(requestObject.getRequestObjectSigningAlg().toString());
376  }
377  if (requestObject.getRequestObjectEncryptionAlg() != null) {
378  p_client.setRequestObjectEncryptionAlg(requestObject.getRequestObjectEncryptionAlg().toString());
379  }
380  if (requestObject.getRequestObjectEncryptionEnc() != null) {
381  p_client.setRequestObjectEncryptionEnc(requestObject.getRequestObjectEncryptionEnc().toString());
382  }
383  if (requestObject.getTokenEndpointAuthMethod() != null) {
384  p_client.setTokenEndpointAuthMethod(requestObject.getTokenEndpointAuthMethod().toString());
385  } else { // If omitted, the default is client_secret_basic
387  }
388  if (requestObject.getTokenEndpointAuthSigningAlg() != null) {
389  p_client.setTokenEndpointAuthSigningAlg(requestObject.getTokenEndpointAuthSigningAlg().toString());
390  }
391  if (requestObject.getDefaultMaxAge() != null) {
392  p_client.setDefaultMaxAge(requestObject.getDefaultMaxAge());
393  }
394  if (requestObject.getRequireAuthTime() != null) {
395  p_client.setRequireAuthTime(requestObject.getRequireAuthTime());
396  }
397  List<String> defaultAcrValues = requestObject.getDefaultAcrValues();
398  if (defaultAcrValues != null && !defaultAcrValues.isEmpty()) {
399  defaultAcrValues = new ArrayList<String>(new HashSet<String>(defaultAcrValues)); // Remove repeated elements
400  p_client.setDefaultAcrValues(defaultAcrValues.toArray(new String[defaultAcrValues.size()]));
401  }
402  if (StringUtils.isNotBlank(requestObject.getInitiateLoginUri())) {
403  p_client.setInitiateLoginUri(requestObject.getInitiateLoginUri());
404  }
405  List<String> postLogoutRedirectUris = requestObject.getPostLogoutRedirectUris();
406  if (postLogoutRedirectUris != null && !postLogoutRedirectUris.isEmpty()) {
407  postLogoutRedirectUris = new ArrayList<String>(new HashSet<String>(postLogoutRedirectUris)); // Remove repeated elements
408  p_client.setPostLogoutRedirectUris(postLogoutRedirectUris.toArray(new String[postLogoutRedirectUris.size()]));
409  }
410 
411  if (requestObject.getFrontChannelLogoutUris() != null && !requestObject.getFrontChannelLogoutUris().isEmpty()) {
412  p_client.setFrontChannelLogoutUri(requestObject.getFrontChannelLogoutUris().toArray(new String[requestObject.getFrontChannelLogoutUris().size()]));
413  }
414  p_client.setFrontChannelLogoutSessionRequired(requestObject.getFrontChannelLogoutSessionRequired());
415 
416  List<String> requestUris = requestObject.getRequestUris();
417  if (requestUris != null && !requestUris.isEmpty()) {
418  requestUris = new ArrayList<String>(new HashSet<String>(requestUris)); // Remove repeated elements
419  p_client.setRequestUris(requestUris.toArray(new String[requestUris.size()]));
420  }
421 
422  List<String> authorizedOrigins = requestObject.getAuthorizedOrigins();
423  if (authorizedOrigins != null && !authorizedOrigins.isEmpty()) {
424  authorizedOrigins = new ArrayList<String>(new HashSet<String>(authorizedOrigins)); // Remove repeated elements
425  p_client.setAuthorizedOrigins(authorizedOrigins.toArray(new String[authorizedOrigins.size()]));
426  }
427 
428  List<String> scopes = requestObject.getScope();
429  List<String> scopesDn;
430  if (scopes != null && !scopes.isEmpty()
433  List<String> defaultScopes = scopeService.getDefaultScopesDn();
434  List<String> requestedScopes = scopeService.getScopesDn(scopes);
435  if (defaultScopes.containsAll(requestedScopes)) {
436  scopesDn = requestedScopes;
437  p_client.setScopes(scopesDn.toArray(new String[scopesDn.size()]));
438  } else {
439  scopesDn = defaultScopes;
440  p_client.setScopes(scopesDn.toArray(new String[scopesDn.size()]));
441  }
442  } else {
443  scopesDn = scopeService.getDefaultScopesDn();
444  p_client.setScopes(scopesDn.toArray(new String[scopesDn.size()]));
445  }
446 
447  List<String> claims = requestObject.getClaims();
448  if (claims != null && !claims.isEmpty()) {
449  List<String> claimsDn = attributeService.getAttributesDn(claims);
450  p_client.setClaims(claimsDn.toArray(new String[claimsDn.size()]));
451  }
452 
453  Date clientSecretExpiresAt = requestObject.getClientSecretExpiresAt();
454  if (clientSecretExpiresAt != null) {
455  p_client.setClientSecretExpiresAt(clientSecretExpiresAt);
456  }
457 
458  if (requestObject.getJsonObject() != null) {
459  // Custom params
460  putCustomStuffIntoObject(p_client, requestObject.getJsonObject());
461  }
462  }
ID_TOKEN
Definition: ResponseType.java:47
void setResponseTypes(ResponseType[] responseTypes)
Definition: Client.java:446
CODE
Definition: ResponseType.java:39
void setClaims(String[] claims)
Definition: Client.java:1046
Boolean getDynamicRegistrationScopesParamEnabled()
Definition: AppConfiguration.java:928
CLIENT_SECRET_BASIC
Definition: AuthenticationMethod.java:18
void putCustomStuffIntoObject(Client p_client, JSONObject p_requestObject)
Definition: RegisterRestWebServiceImpl.java:684
void setContacts(String[] contacts)
Definition: Client.java:512
void setClientSecretExpiresAt(Date clientSecretExpiresAt)
Definition: Client.java:376
void setUserInfoEncryptedResponseAlg(String userInfoEncryptedResponseAlg)
Definition: Client.java:798
void setFrontChannelLogoutUri(String[] frontChannelLogoutUri)
Definition: Client.java:266
AttributeService attributeService
Definition: RegisterRestWebServiceImpl.java:78
void setJwks(String jwks)
Definition: Client.java:670
void setSubjectType(String subjectType)
Definition: Client.java:708
void setRequireAuthTime(boolean requireAuthTime)
Definition: Client.java:952
void setFrontChannelLogoutSessionRequired(Boolean frontChannelLogoutSessionRequired)
Definition: Client.java:248
void setClientUri(String clientUri)
Definition: Client.java:578
void setPolicyUri(String policyUri)
Definition: Client.java:598
List< String > getScopesDn(List< String > scopeNames)
Definition: ScopeService.java:71
Definition: GrantType.java:23
void setSectorIdentifierUri(String sectorIdentifierUri)
Definition: Client.java:690
void setDefaultMaxAge(Integer defaultMaxAge)
Definition: Client.java:932
void setLogoUri(String logoUri)
Definition: Client.java:560
void setClaimRedirectUris(String[] claimRedirectUris)
Definition: Client.java:426
void setGrantTypes(GrantType[] grantTypes)
Definition: Client.java:466
AppConfiguration appConfiguration
Definition: RegisterRestWebServiceImpl.java:97
void setUserInfoSignedResponseAlg(String userInfoSignedResponseAlg)
Definition: Client.java:780
void setRequestObjectEncryptionEnc(String requestObjectEncryptionEnc)
Definition: Client.java:874
void setDefaultAcrValues(String[] defaultAcrValues)
Definition: Client.java:974
void setTosUri(String tosUri)
Definition: Client.java:618
List< String > getDefaultScopesDn()
Definition: ScopeService.java:59
void setInitiateLoginUri(String initiateLoginUri)
Definition: Client.java:992
void setAccessTokenAsJwt(boolean accessTokenAsJwt)
Definition: Client.java:210
void setIdTokenEncryptedResponseEnc(String idTokenEncryptedResponseEnc)
Definition: Client.java:762
REFRESH_TOKEN
Definition: GrantType.java:70
AUTHORIZATION_CODE
Definition: GrantType.java:33
void setClientName(String clientName)
Definition: Client.java:530
void setTokenEndpointAuthSigningAlg(String tokenEndpointAuthSigningAlg)
Definition: Client.java:910
Set< GrantType > getGrantTypesSupported()
Definition: AppConfiguration.java:549
void setIdTokenEncryptedResponseAlg(String idTokenEncryptedResponseAlg)
Definition: Client.java:744
Set< GrantType > getDynamicGrantTypeDefault()
Definition: AppConfiguration.java:1333
ScopeService scopeService
Definition: RegisterRestWebServiceImpl.java:75
Boolean getEnableClientGrantTypeUpdate()
Definition: AppConfiguration.java:1325
void setRequestObjectEncryptionAlg(String requestObjectEncryptionAlg)
Definition: Client.java:854
void setApplicationType(String applicationType)
Definition: Client.java:492
void setIdTokenSignedResponseAlg(String idTokenSignedResponseAlg)
Definition: Client.java:726
void setAuthorizedOrigins(String[] authorizedOrigins)
Definition: Client.java:1126
Set< Set< ResponseType > > getResponseTypesSupported()
Definition: AppConfiguration.java:541
void setRedirectUris(String[] redirectUris)
Definition: Client.java:398
void setRequestUris(String[] requestUris)
Definition: Client.java:1030
void setAccessTokenSigningAlg(String accessTokenSigningAlg)
Definition: Client.java:218
void setTokenEndpointAuthMethod(String tokenEndpointAuthMethod)
Definition: Client.java:892
void setJwksUri(String jwksUri)
Definition: Client.java:640
void setScopes(String[] scopes)
Definition: Client.java:1038
TOKEN
Definition: ResponseType.java:43
List< String > getAttributesDn(List< String > claimNames)
Definition: AttributeService.java:99
Definition: ResponseType.java:34
void setRequestObjectSigningAlg(String requestObjectSigningAlg)
Definition: Client.java:834
IMPLICIT
Definition: GrantType.java:42
Definition: AuthenticationMethod.java:12
void setUserInfoEncryptedResponseEnc(String userInfoEncryptedResponseEnc)
Definition: Client.java:816
void setPostLogoutRedirectUris(String[] postLogoutRedirectUris)
Definition: Client.java:1012

メンバ詳解

◆ appConfiguration

AppConfiguration org.xdi.oxauth.register.ws.rs.RegisterRestWebServiceImpl.appConfiguration
private

◆ applicationAuditLogger

ApplicationAuditLogger org.xdi.oxauth.register.ws.rs.RegisterRestWebServiceImpl.applicationAuditLogger
private

◆ attributeService

AttributeService org.xdi.oxauth.register.ws.rs.RegisterRestWebServiceImpl.attributeService
private

◆ clientService

ClientService org.xdi.oxauth.register.ws.rs.RegisterRestWebServiceImpl.clientService
private

◆ errorResponseFactory

ErrorResponseFactory org.xdi.oxauth.register.ws.rs.RegisterRestWebServiceImpl.errorResponseFactory
private

◆ externalDynamicClientRegistrationService

ExternalDynamicClientRegistrationService org.xdi.oxauth.register.ws.rs.RegisterRestWebServiceImpl.externalDynamicClientRegistrationService
private

◆ inumService

InumService org.xdi.oxauth.register.ws.rs.RegisterRestWebServiceImpl.inumService
private

◆ log

Logger org.xdi.oxauth.register.ws.rs.RegisterRestWebServiceImpl.log
private

◆ metricService

MetricService org.xdi.oxauth.register.ws.rs.RegisterRestWebServiceImpl.metricService
private

◆ registerParamsValidator

RegisterParamsValidator org.xdi.oxauth.register.ws.rs.RegisterRestWebServiceImpl.registerParamsValidator
private

◆ scopeService

ScopeService org.xdi.oxauth.register.ws.rs.RegisterRestWebServiceImpl.scopeService
private

◆ staticConfiguration

StaticConfiguration org.xdi.oxauth.register.ws.rs.RegisterRestWebServiceImpl.staticConfiguration
private

◆ tokenService

TokenService org.xdi.oxauth.register.ws.rs.RegisterRestWebServiceImpl.tokenService
private

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