Create a new Client, issue a client ID, and create a registration access token.
156 ClientDetailsEntity newClient = null;
158 newClient = ClientDetailsEntityJsonProcessor.parse(jsonString);
159 }
catch (JsonSyntaxException e) {
162 logger.error(
"registerNewClient failed; submitted JSON is malformed");
163 m.addAttribute(HttpCodeView.CODE, HttpStatus.BAD_REQUEST);
164 return HttpCodeView.VIEWNAME;
167 if (newClient != null) {
175 newClient.setClientId(null);
176 newClient.setClientSecret(null);
186 }
catch (ValidationException ve) {
188 m.addAttribute(JsonErrorView.ERROR, ve.getError());
189 m.addAttribute(JsonErrorView.ERROR_MESSAGE, ve.getErrorDescription());
190 m.addAttribute(HttpCodeView.CODE, ve.getStatus());
191 return JsonErrorView.VIEWNAME;
194 if (newClient.getTokenEndpointAuthMethod() == null) {
195 newClient.setTokenEndpointAuthMethod(AuthMethod.SECRET_BASIC);
198 if (newClient.getTokenEndpointAuthMethod() == AuthMethod.SECRET_BASIC ||
199 newClient.getTokenEndpointAuthMethod() == AuthMethod.SECRET_JWT ||
200 newClient.getTokenEndpointAuthMethod() == AuthMethod.SECRET_POST) {
209 if (newClient.getGrantTypes().contains(
"authorization_code")) {
211 newClient.setIdTokenValiditySeconds((
int)TimeUnit.MINUTES.toSeconds(5));
212 newClient.setRefreshTokenValiditySeconds((
int)TimeUnit.HOURS.toSeconds(24));
213 }
else if (newClient.getGrantTypes().contains(
"implicit")) {
214 newClient.setAccessTokenValiditySeconds((
int)TimeUnit.MINUTES.toSeconds(15));
215 newClient.setIdTokenValiditySeconds((
int)TimeUnit.MINUTES.toSeconds(5));
216 newClient.setRefreshTokenValiditySeconds(0);
217 }
else if (newClient.getGrantTypes().contains(
"client_credentials")) {
218 newClient.setAccessTokenValiditySeconds((
int)TimeUnit.HOURS.toSeconds(6));
219 newClient.setIdTokenValiditySeconds(0);
220 newClient.setRefreshTokenValiditySeconds(0);
223 newClient.setAccessTokenValiditySeconds((
int)TimeUnit.HOURS.toSeconds(1));
224 newClient.setIdTokenValiditySeconds((
int)TimeUnit.MINUTES.toSeconds(10));
225 newClient.setRefreshTokenValiditySeconds(null);
229 newClient.setDynamicallyRegistered(
true);
232 newClient.setAllowIntrospection(
false);
244 RegisteredClient registered =
new RegisteredClient(savedClient, token.getValue(),
config.
getIssuer() +
"register/" + UriUtils.encodePathSegment(savedClient.getClientId(),
"UTF-8"));
245 m.addAttribute(
"client", registered);
246 m.addAttribute(HttpCodeView.CODE, HttpStatus.CREATED);
248 return ClientInformationResponseView.VIEWNAME;
249 }
catch (UnsupportedEncodingException e) {
250 logger.error(
"Unsupported encoding", e);
251 m.addAttribute(HttpCodeView.CODE, HttpStatus.INTERNAL_SERVER_ERROR);
252 return HttpCodeView.VIEWNAME;
253 }
catch (IllegalArgumentException e) {
254 logger.error(
"Couldn't save client", e);
256 m.addAttribute(JsonErrorView.ERROR,
"invalid_client_metadata");
257 m.addAttribute(JsonErrorView.ERROR_MESSAGE,
"Unable to save client due to invalid or inconsistent metadata.");
258 m.addAttribute(HttpCodeView.CODE, HttpStatus.BAD_REQUEST);
260 return JsonErrorView.VIEWNAME;
264 logger.error(
"registerNewClient failed; submitted JSON is malformed");
265 m.addAttribute(HttpCodeView.CODE, HttpStatus.BAD_REQUEST);
267 return HttpCodeView.VIEWNAME;
OAuth2AccessTokenEntity saveAccessToken(OAuth2AccessTokenEntity accessToken)
ClientDetailsEntity saveNewClient(ClientDetailsEntity client)
ConfigurationPropertiesBean config
Definition: DynamicClientRegistrationEndpoint.java:132
static final Logger logger
Definition: DynamicClientRegistrationEndpoint.java:144
ClientDetailsEntity validateGrantTypes(ClientDetailsEntity newClient)
Definition: DynamicClientRegistrationEndpoint.java:462
ClientDetailsEntity validateSoftwareStatement(ClientDetailsEntity newClient)
Definition: DynamicClientRegistrationEndpoint.java:614
void setAccessTokenValiditySeconds(Integer accessTokenValiditySeconds)
Definition: ClientDetailsEntity.java:511
ClientDetailsEntity validateScopes(ClientDetailsEntity newClient)
Definition: DynamicClientRegistrationEndpoint.java:438
ClientDetailsEntity validateRedirectUris(ClientDetailsEntity newClient)
Definition: DynamicClientRegistrationEndpoint.java:557
OAuth2TokenEntityService tokenService
Definition: DynamicClientRegistrationEndpoint.java:123
ClientDetailsEntity validateResponseTypes(ClientDetailsEntity newClient)
Definition: DynamicClientRegistrationEndpoint.java:455
OAuth2AccessTokenEntity createRegistrationAccessToken(ClientDetailsEntity client)
ClientDetailsEntity generateClientSecret(ClientDetailsEntity client)
ClientDetailsEntity validateAuth(ClientDetailsEntity newClient)
Definition: DynamicClientRegistrationEndpoint.java:581
OIDCTokenService connectTokenService
Definition: DynamicClientRegistrationEndpoint.java:135
String getIssuer()
Definition: ConfigurationPropertiesBean.java:100
boolean isHeartMode()
Definition: ConfigurationPropertiesBean.java:250
ClientDetailsEntityService clientService
Definition: DynamicClientRegistrationEndpoint.java:120