001/******************************************************************************* 002 * Copyright 2014 The MITRE Corporation 003 * and the MIT Kerberos and Internet Trust Consortium 004 * 005 * Licensed under the Apache License, Version 2.0 (the "License"); 006 * you may not use this file except in compliance with the License. 007 * You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 ******************************************************************************/ 017package org.mitre.openid.connect.config; 018 019import java.util.List; 020 021import com.nimbusds.jose.EncryptionMethod; 022import com.nimbusds.jose.JWEAlgorithm; 023import com.nimbusds.jose.JWSAlgorithm; 024 025 026 027/** 028 * 029 * Container class for a client's view of a server's configuration 030 * 031 * @author nemonik, jricher 032 * 033 */ 034public class ServerConfiguration { 035 036 /* 037 * 038 issuer 039 REQUIRED. URL using the https scheme with no query or fragment component that the OP asserts as its Issuer Identifier. 040 authorization_endpoint 041 OPTIONAL. URL of the OP's Authentication and Authorization Endpoint [OpenID.Messages]. 042 token_endpoint 043 OPTIONAL. URL of the OP's OAuth 2.0 Token Endpoint [OpenID.Messages]. 044 userinfo_endpoint 045 RECOMMENDED. URL of the OP's UserInfo Endpoint [OpenID.Messages]. This URL MUST use the 046 https scheme and MAY contain port, path, and query parameter components. 047 check_session_iframe 048 OPTIONAL. URL of an OP endpoint that provides a page to support cross-origin communications for 049 session state information with the RP Client, using the HTML5 postMessage API. The page is loaded 050 from an invisible iframe embedded in an RP page so that it can run in the OP's security context. See [OpenID.Session]. 051 end_session_endpoint 052 OPTIONAL. URL of the OP's endpoint that initiates logging out the End-User. See [OpenID.Session]. 053 jwks_uri 054 REQUIRED. URL of the OP's JSON Web Key Set [JWK] document. This contains the signing key(s) the 055 Client uses to validate signatures from the OP. The JWK Set MAY also contain the Server's encryption key(s), which are used by Clients to encrypt requests to the Server. When both signing and encryption keys are made available, a use (Key Use) parameter value is REQUIRED for all keys in the document to indicate each key's intended usage. 056 registration_endpoint 057 RECOMMENDED. URL of the OP's Dynamic Client Registration Endpoint [OpenID.Registration]. 058 scopes_supported 059 RECOMMENDED. JSON array containing a list of the OAuth 2.0 [RFC6749] scope values that this server 060 response_types_supported 061 REQUIRED. JSON array containing a list of the OAuth 2.0 response_type values that this server 062 supports. The server MUST support the code, id_token, and the token id_token response type values. 063 grant_types_supported 064 OPTIONAL. JSON array containing a list of the OAuth 2.0 grant type values that this server supports. 065 The server MUST support the authorization_code and implicit grant type values and MAY support the 066 urn:ietf:params:oauth:grant-type:jwt-bearer grant type defined in OAuth JWT Bearer Token Profiles [OAuth.JWT]. 067 If omitted, the default value is ["authorization_code", "implicit"]. 068 acr_values_supported 069 OPTIONAL. JSON array containing a list of the Authentication Context Class References that this server supports. 070 subject_types_supported 071 REQUIRED. JSON array containing a list of the subject identifier types that this server supports. 072 Valid types include pairwise and public. 073 userinfo_signing_alg_values_supported 074 OPTIONAL. JSON array containing a list of the JWS [JWS] signing algorithms (alg values) [JWA] supported 075 by the UserInfo Endpoint to encode the Claims in a JWT [JWT]. 076 userinfo_encryption_alg_values_supported 077 OPTIONAL. JSON array containing a list of the JWE [JWE] encryption algorithms (alg values) [JWA] supported 078 by the UserInfo Endpoint to encode the Claims in a JWT [JWT]. 079 userinfo_encryption_enc_values_supported 080 OPTIONAL. JSON array containing a list of the JWE encryption algorithms (enc values) [JWA] supported 081 by the UserInfo Endpoint to encode the Claims in a JWT [JWT]. 082 id_token_signing_alg_values_supported 083 REQUIRED. JSON array containing a list of the JWS signing algorithms (alg values) supported by the 084 Authorization Server for the ID Token to encode the Claims in a JWT [JWT]. 085 id_token_encryption_alg_values_supported 086 OPTIONAL. JSON array containing a list of the JWE encryption algorithms (alg values) supported by the 087 Authorization Server for the ID Token to encode the Claims in a JWT [JWT]. 088 id_token_encryption_enc_values_supported 089 OPTIONAL. JSON array containing a list of the JWE encryption algorithms (enc values) supported by the 090 Authorization Server for the ID Token to encode the Claims in a JWT [JWT]. 091 request_object_signing_alg_values_supported 092 OPTIONAL. JSON array containing a list of the JWS signing algorithms (alg values) supported by the 093 Authorization Server for the Request Object described in Section 2.9 of OpenID Connect Messages 1.0 094 [OpenID.Messages]. These algorithms are used both when the Request Object is passed by value (using the 095 request parameter) and when it is passed by reference (using the request_uri parameter). Servers SHOULD 096 support none and RS256. 097 request_object_encryption_alg_values_supported 098 OPTIONAL. JSON array containing a list of the JWE encryption algorithms (alg values) supported by the 099 Authorization Server for the Request Object described in Section 2.9 of OpenID Connect Messages 1.0 100 [OpenID.Messages]. These algorithms are used both when the Request Object is passed by value and when it 101 is passed by reference. 102 request_object_encryption_enc_values_supported 103 OPTIONAL. JSON array containing a list of the JWE encryption algorithms (enc values) supported by the 104 Authorization Server for the Request Object described in Section 2.9 of OpenID Connect Messages 1.0 105 [OpenID.Messages]. These algorithms are used both when the Request Object is passed by value and when 106 it is passed by reference. 107 token_endpoint_auth_methods_supported 108 OPTIONAL. JSON array containing a list of authentication methods supported by this Token Endpoint. 109 The options are client_secret_post, client_secret_basic, client_secret_jwt, and private_key_jwt, as 110 described in Section 2.2.1 of OpenID Connect Messages 1.0 [OpenID.Messages]. Other authentication 111 methods MAY be defined by extensions. If omitted, the default is client_secret_basic -- the HTTP 112 Basic Authentication Scheme as specified in Section 2.3.1 of OAuth 2.0 [RFC6749]. 113 token_endpoint_auth_signing_alg_values_supported 114 OPTIONAL. JSON array containing a list of the JWS signing algorithms (alg values) supported by the 115 Token Endpoint for the private_key_jwt and client_secret_jwt methods to encode the JWT [JWT]. Servers 116 SHOULD support RS256. 117 display_values_supported 118 OPTIONAL. JSON array containing a list of the display parameter values that the OpenID Provider 119 supports. These values are described in Section 2.1.1 of OpenID Connect Messages 1.0 [OpenID.Messages]. 120 claim_types_supported 121 OPTIONAL. JSON array containing a list of the Claim Types that the OpenID Provider supports. These Claim 122 Types are described in Section 2.6 of OpenID Connect Messages 1.0 [OpenID.Messages]. Values defined by 123 this specification are normal, aggregated, and distributed. If not specified, the implementation supports 124 only normal Claims. 125 claims_supported 126 RECOMMENDED. JSON array containing a list of the Claim Names of the Claims that the OpenID Provider MAY 127 be able to supply values for. Note that for privacy or other reasons, this might not be an exhaustive list. 128 service_documentation 129 OPTIONAL. URL of a page containing human-readable information that developers might want or need to 130 know when using the OpenID Provider. In particular, if the OpenID Provider does not support Dynamic 131 Client Registration, then information on how to register Clients needs to be provided in this documentation. 132 claims_locales_supported 133 OPTIONAL. Languages and scripts supported for values in Claims being returned, represented as a JSON array 134 of BCP47 [RFC5646] language tag values. Not all languages and scripts are necessarily supported for all 135 Claim values. 136 ui_locales_supported 137 OPTIONAL. Languages and scripts supported for the user interface, represented as a JSON array of BCP47 138 [RFC5646] language tag values. 139 claims_parameter_supported 140 OPTIONAL. Boolean value specifying whether the OP supports use of the claims parameter, with true 141 indicating support. If omitted, the default value is false. 142 request_parameter_supported 143 OPTIONAL. Boolean value specifying whether the OP supports use of the request parameter, with true 144 indicating support. If omitted, the default value is false. 145 request_uri_parameter_supported 146 OPTIONAL. Boolean value specifying whether the OP supports use of the request_uri parameter, with 147 true indicating support. If omitted, the default value is true. 148 require_request_uri_registration 149 OPTIONAL. Boolean value specifying whether the OP requires any request_uri values used to be 150 pre-registered using the request_uris registration parameter. Pre-registration is REQUIRED when 151 the value is true. If omitted, the default value is false. 152 op_policy_uri 153 OPTIONAL. URL that the OpenID Provider provides to the person registering the Client to read 154 about the OP's requirements on how the Relying Party can use the data provided by the OP. The 155 registration process SHOULD display this URL to the person registering the Client if it is given. 156 op_tos_uri 157 OPTIONAL. URL that the OpenID Provider provides to the person registering the Client to read about 158 OpenID Provider's terms of service. The registration process SHOULD display this URL to the person 159 registering the Client if it is given. 160 */ 161 162 private String authorizationEndpointUri; 163 164 private String tokenEndpointUri; 165 166 private String registrationEndpointUri; 167 168 private String issuer; 169 170 private String jwksUri; 171 172 private String userInfoUri; 173 174 private String introspectionEndpointUri; 175 176 private String revocationEndpointUri; 177 178 private String checkSessionIframe; 179 private String endSessionEndpoint; 180 private List<String> scopesSupported; 181 private List<String> responseTypesSupported; 182 private List<String> grantTypesSupported; 183 private List<String> acrValuesSupported; 184 private List<String> subjectTypesSupported; 185 private List<JWSAlgorithm> userinfoSigningAlgValuesSupported; 186 private List<JWEAlgorithm> userinfoEncryptionAlgValuesSupported; 187 private List<EncryptionMethod> userinfoEncryptionEncValuesSupported; 188 private List<JWSAlgorithm> idTokenSigningAlgValuesSupported; 189 private List<JWEAlgorithm> idTokenEncryptionAlgValuesSupported; 190 private List<EncryptionMethod> idTokenEncryptionEncValuesSupported; 191 private List<JWSAlgorithm> requestObjectSigningAlgValuesSupported; 192 private List<JWEAlgorithm> requestObjectEncryptionAlgValuesSupported; 193 private List<EncryptionMethod> requestObjectEncryptionEncValuesSupported; 194 private List<String> tokenEndpointAuthMethodsSupported; 195 private List<JWSAlgorithm> tokenEndpointAuthSigningAlgValuesSupported; 196 private List<String> displayValuesSupported; 197 private List<String> claimTypesSupported; 198 private List<String> claimsSupported; 199 private String serviceDocumentation; 200 private List<String> claimsLocalesSupported; 201 private List<String> uiLocalesSupported; 202 private Boolean claimsParameterSupported; 203 private Boolean requestParameterSupported; 204 private Boolean requestUriParameterSupported; 205 private Boolean requireRequestUriRegistration; 206 private String opPolicyUri; 207 private String opTosUri; 208 private UserInfoTokenMethod userInfoTokenMethod; 209 210 public enum UserInfoTokenMethod { 211 HEADER, 212 FORM, 213 QUERY; 214 } 215 216 /** 217 * @return the authorizationEndpointUri 218 */ 219 public String getAuthorizationEndpointUri() { 220 return authorizationEndpointUri; 221 } 222 /** 223 * @param authorizationEndpointUri the authorizationEndpointUri to set 224 */ 225 public void setAuthorizationEndpointUri(String authorizationEndpointUri) { 226 this.authorizationEndpointUri = authorizationEndpointUri; 227 } 228 /** 229 * @return the tokenEndpointUri 230 */ 231 public String getTokenEndpointUri() { 232 return tokenEndpointUri; 233 } 234 /** 235 * @param tokenEndpointUri the tokenEndpointUri to set 236 */ 237 public void setTokenEndpointUri(String tokenEndpointUri) { 238 this.tokenEndpointUri = tokenEndpointUri; 239 } 240 /** 241 * @return the registrationEndpointUri 242 */ 243 public String getRegistrationEndpointUri() { 244 return registrationEndpointUri; 245 } 246 /** 247 * @param registrationEndpointUri the registrationEndpointUri to set 248 */ 249 public void setRegistrationEndpointUri(String registrationEndpointUri) { 250 this.registrationEndpointUri = registrationEndpointUri; 251 } 252 /** 253 * @return the issuer 254 */ 255 public String getIssuer() { 256 return issuer; 257 } 258 /** 259 * @param issuer the issuer to set 260 */ 261 public void setIssuer(String issuer) { 262 this.issuer = issuer; 263 } 264 /** 265 * @return the jwksUri 266 */ 267 public String getJwksUri() { 268 return jwksUri; 269 } 270 /** 271 * @param jwksUri the jwksUri to set 272 */ 273 public void setJwksUri(String jwksUri) { 274 this.jwksUri = jwksUri; 275 } 276 /** 277 * @return the userInfoUri 278 */ 279 public String getUserInfoUri() { 280 return userInfoUri; 281 } 282 /** 283 * @param userInfoUri the userInfoUri to set 284 */ 285 public void setUserInfoUri(String userInfoUri) { 286 this.userInfoUri = userInfoUri; 287 } 288 /** 289 * @return the introspectionEndpointUri 290 */ 291 public String getIntrospectionEndpointUri() { 292 return introspectionEndpointUri; 293 } 294 /** 295 * @param introspectionEndpointUri the introspectionEndpointUri to set 296 */ 297 public void setIntrospectionEndpointUri(String introspectionEndpointUri) { 298 this.introspectionEndpointUri = introspectionEndpointUri; 299 } 300 /** 301 * @return the checkSessionIframe 302 */ 303 public String getCheckSessionIframe() { 304 return checkSessionIframe; 305 } 306 /** 307 * @param checkSessionIframe the checkSessionIframe to set 308 */ 309 public void setCheckSessionIframe(String checkSessionIframe) { 310 this.checkSessionIframe = checkSessionIframe; 311 } 312 /** 313 * @return the endSessionEndpoint 314 */ 315 public String getEndSessionEndpoint() { 316 return endSessionEndpoint; 317 } 318 /** 319 * @param endSessionEndpoint the endSessionEndpoint to set 320 */ 321 public void setEndSessionEndpoint(String endSessionEndpoint) { 322 this.endSessionEndpoint = endSessionEndpoint; 323 } 324 /** 325 * @return the scopesSupported 326 */ 327 public List<String> getScopesSupported() { 328 return scopesSupported; 329 } 330 /** 331 * @param scopesSupported the scopesSupported to set 332 */ 333 public void setScopesSupported(List<String> scopesSupported) { 334 this.scopesSupported = scopesSupported; 335 } 336 /** 337 * @return the responseTypesSupported 338 */ 339 public List<String> getResponseTypesSupported() { 340 return responseTypesSupported; 341 } 342 /** 343 * @param responseTypesSupported the responseTypesSupported to set 344 */ 345 public void setResponseTypesSupported(List<String> responseTypesSupported) { 346 this.responseTypesSupported = responseTypesSupported; 347 } 348 /** 349 * @return the grantTypesSupported 350 */ 351 public List<String> getGrantTypesSupported() { 352 return grantTypesSupported; 353 } 354 /** 355 * @param grantTypesSupported the grantTypesSupported to set 356 */ 357 public void setGrantTypesSupported(List<String> grantTypesSupported) { 358 this.grantTypesSupported = grantTypesSupported; 359 } 360 /** 361 * @return the acrValuesSupported 362 */ 363 public List<String> getAcrValuesSupported() { 364 return acrValuesSupported; 365 } 366 /** 367 * @param acrValuesSupported the acrValuesSupported to set 368 */ 369 public void setAcrValuesSupported(List<String> acrValuesSupported) { 370 this.acrValuesSupported = acrValuesSupported; 371 } 372 /** 373 * @return the subjectTypesSupported 374 */ 375 public List<String> getSubjectTypesSupported() { 376 return subjectTypesSupported; 377 } 378 /** 379 * @param subjectTypesSupported the subjectTypesSupported to set 380 */ 381 public void setSubjectTypesSupported(List<String> subjectTypesSupported) { 382 this.subjectTypesSupported = subjectTypesSupported; 383 } 384 /** 385 * @return the userinfoSigningAlgValuesSupported 386 */ 387 public List<JWSAlgorithm> getUserinfoSigningAlgValuesSupported() { 388 return userinfoSigningAlgValuesSupported; 389 } 390 /** 391 * @param userinfoSigningAlgValuesSupported the userinfoSigningAlgValuesSupported to set 392 */ 393 public void setUserinfoSigningAlgValuesSupported(List<JWSAlgorithm> userinfoSigningAlgValuesSupported) { 394 this.userinfoSigningAlgValuesSupported = userinfoSigningAlgValuesSupported; 395 } 396 /** 397 * @return the userinfoEncryptionAlgValuesSupported 398 */ 399 public List<JWEAlgorithm> getUserinfoEncryptionAlgValuesSupported() { 400 return userinfoEncryptionAlgValuesSupported; 401 } 402 /** 403 * @param userinfoEncryptionAlgValuesSupported the userinfoEncryptionAlgValuesSupported to set 404 */ 405 public void setUserinfoEncryptionAlgValuesSupported(List<JWEAlgorithm> userinfoEncryptionAlgValuesSupported) { 406 this.userinfoEncryptionAlgValuesSupported = userinfoEncryptionAlgValuesSupported; 407 } 408 /** 409 * @return the userinfoEncryptionEncValuesSupported 410 */ 411 public List<EncryptionMethod> getUserinfoEncryptionEncValuesSupported() { 412 return userinfoEncryptionEncValuesSupported; 413 } 414 /** 415 * @param userinfoEncryptionEncValuesSupported the userinfoEncryptionEncValuesSupported to set 416 */ 417 public void setUserinfoEncryptionEncValuesSupported(List<EncryptionMethod> userinfoEncryptionEncValuesSupported) { 418 this.userinfoEncryptionEncValuesSupported = userinfoEncryptionEncValuesSupported; 419 } 420 /** 421 * @return the idTokenSigningAlgValuesSupported 422 */ 423 public List<JWSAlgorithm> getIdTokenSigningAlgValuesSupported() { 424 return idTokenSigningAlgValuesSupported; 425 } 426 /** 427 * @param idTokenSigningAlgValuesSupported the idTokenSigningAlgValuesSupported to set 428 */ 429 public void setIdTokenSigningAlgValuesSupported(List<JWSAlgorithm> idTokenSigningAlgValuesSupported) { 430 this.idTokenSigningAlgValuesSupported = idTokenSigningAlgValuesSupported; 431 } 432 /** 433 * @return the idTokenEncryptionAlgValuesSupported 434 */ 435 public List<JWEAlgorithm> getIdTokenEncryptionAlgValuesSupported() { 436 return idTokenEncryptionAlgValuesSupported; 437 } 438 /** 439 * @param idTokenEncryptionAlgValuesSupported the idTokenEncryptionAlgValuesSupported to set 440 */ 441 public void setIdTokenEncryptionAlgValuesSupported(List<JWEAlgorithm> idTokenEncryptionAlgValuesSupported) { 442 this.idTokenEncryptionAlgValuesSupported = idTokenEncryptionAlgValuesSupported; 443 } 444 /** 445 * @return the idTokenEncryptionEncValuesSupported 446 */ 447 public List<EncryptionMethod> getIdTokenEncryptionEncValuesSupported() { 448 return idTokenEncryptionEncValuesSupported; 449 } 450 /** 451 * @param idTokenEncryptionEncValuesSupported the idTokenEncryptionEncValuesSupported to set 452 */ 453 public void setIdTokenEncryptionEncValuesSupported(List<EncryptionMethod> idTokenEncryptionEncValuesSupported) { 454 this.idTokenEncryptionEncValuesSupported = idTokenEncryptionEncValuesSupported; 455 } 456 /** 457 * @return the requestObjectSigningAlgValuesSupported 458 */ 459 public List<JWSAlgorithm> getRequestObjectSigningAlgValuesSupported() { 460 return requestObjectSigningAlgValuesSupported; 461 } 462 /** 463 * @param requestObjectSigningAlgValuesSupported the requestObjectSigningAlgValuesSupported to set 464 */ 465 public void setRequestObjectSigningAlgValuesSupported(List<JWSAlgorithm> requestObjectSigningAlgValuesSupported) { 466 this.requestObjectSigningAlgValuesSupported = requestObjectSigningAlgValuesSupported; 467 } 468 /** 469 * @return the requestObjectEncryptionAlgValuesSupported 470 */ 471 public List<JWEAlgorithm> getRequestObjectEncryptionAlgValuesSupported() { 472 return requestObjectEncryptionAlgValuesSupported; 473 } 474 /** 475 * @param requestObjectEncryptionAlgValuesSupported the requestObjectEncryptionAlgValuesSupported to set 476 */ 477 public void setRequestObjectEncryptionAlgValuesSupported(List<JWEAlgorithm> requestObjectEncryptionAlgValuesSupported) { 478 this.requestObjectEncryptionAlgValuesSupported = requestObjectEncryptionAlgValuesSupported; 479 } 480 /** 481 * @return the requestObjectEncryptionEncValuesSupported 482 */ 483 public List<EncryptionMethod> getRequestObjectEncryptionEncValuesSupported() { 484 return requestObjectEncryptionEncValuesSupported; 485 } 486 /** 487 * @param requestObjectEncryptionEncValuesSupported the requestObjectEncryptionEncValuesSupported to set 488 */ 489 public void setRequestObjectEncryptionEncValuesSupported(List<EncryptionMethod> requestObjectEncryptionEncValuesSupported) { 490 this.requestObjectEncryptionEncValuesSupported = requestObjectEncryptionEncValuesSupported; 491 } 492 /** 493 * @return the tokenEndpointAuthMethodsSupported 494 */ 495 public List<String> getTokenEndpointAuthMethodsSupported() { 496 return tokenEndpointAuthMethodsSupported; 497 } 498 /** 499 * @param tokenEndpointAuthMethodsSupported the tokenEndpointAuthMethodsSupported to set 500 */ 501 public void setTokenEndpointAuthMethodsSupported(List<String> tokenEndpointAuthMethodsSupported) { 502 this.tokenEndpointAuthMethodsSupported = tokenEndpointAuthMethodsSupported; 503 } 504 /** 505 * @return the tokenEndpointAuthSigningAlgValuesSupported 506 */ 507 public List<JWSAlgorithm> getTokenEndpointAuthSigningAlgValuesSupported() { 508 return tokenEndpointAuthSigningAlgValuesSupported; 509 } 510 /** 511 * @param tokenEndpointAuthSigningAlgValuesSupported the tokenEndpointAuthSigningAlgValuesSupported to set 512 */ 513 public void setTokenEndpointAuthSigningAlgValuesSupported(List<JWSAlgorithm> tokenEndpointAuthSigningAlgValuesSupported) { 514 this.tokenEndpointAuthSigningAlgValuesSupported = tokenEndpointAuthSigningAlgValuesSupported; 515 } 516 /** 517 * @return the displayValuesSupported 518 */ 519 public List<String> getDisplayValuesSupported() { 520 return displayValuesSupported; 521 } 522 /** 523 * @param displayValuesSupported the displayValuesSupported to set 524 */ 525 public void setDisplayValuesSupported(List<String> displayValuesSupported) { 526 this.displayValuesSupported = displayValuesSupported; 527 } 528 /** 529 * @return the claimTypesSupported 530 */ 531 public List<String> getClaimTypesSupported() { 532 return claimTypesSupported; 533 } 534 /** 535 * @param claimTypesSupported the claimTypesSupported to set 536 */ 537 public void setClaimTypesSupported(List<String> claimTypesSupported) { 538 this.claimTypesSupported = claimTypesSupported; 539 } 540 /** 541 * @return the claimsSupported 542 */ 543 public List<String> getClaimsSupported() { 544 return claimsSupported; 545 } 546 /** 547 * @param claimsSupported the claimsSupported to set 548 */ 549 public void setClaimsSupported(List<String> claimsSupported) { 550 this.claimsSupported = claimsSupported; 551 } 552 /** 553 * @return the serviceDocumentation 554 */ 555 public String getServiceDocumentation() { 556 return serviceDocumentation; 557 } 558 /** 559 * @param serviceDocumentation the serviceDocumentation to set 560 */ 561 public void setServiceDocumentation(String serviceDocumentation) { 562 this.serviceDocumentation = serviceDocumentation; 563 } 564 /** 565 * @return the claimsLocalesSupported 566 */ 567 public List<String> getClaimsLocalesSupported() { 568 return claimsLocalesSupported; 569 } 570 /** 571 * @param claimsLocalesSupported the claimsLocalesSupported to set 572 */ 573 public void setClaimsLocalesSupported(List<String> claimsLocalesSupported) { 574 this.claimsLocalesSupported = claimsLocalesSupported; 575 } 576 /** 577 * @return the uiLocalesSupported 578 */ 579 public List<String> getUiLocalesSupported() { 580 return uiLocalesSupported; 581 } 582 /** 583 * @param uiLocalesSupported the uiLocalesSupported to set 584 */ 585 public void setUiLocalesSupported(List<String> uiLocalesSupported) { 586 this.uiLocalesSupported = uiLocalesSupported; 587 } 588 /** 589 * @return the claimsParameterSupported 590 */ 591 public Boolean getClaimsParameterSupported() { 592 return claimsParameterSupported; 593 } 594 /** 595 * @param claimsParameterSupported the claimsParameterSupported to set 596 */ 597 public void setClaimsParameterSupported(Boolean claimsParameterSupported) { 598 this.claimsParameterSupported = claimsParameterSupported; 599 } 600 /** 601 * @return the requestParameterSupported 602 */ 603 public Boolean getRequestParameterSupported() { 604 return requestParameterSupported; 605 } 606 /** 607 * @param requestParameterSupported the requestParameterSupported to set 608 */ 609 public void setRequestParameterSupported(Boolean requestParameterSupported) { 610 this.requestParameterSupported = requestParameterSupported; 611 } 612 /** 613 * @return the requestUriParameterSupported 614 */ 615 public Boolean getRequestUriParameterSupported() { 616 return requestUriParameterSupported; 617 } 618 /** 619 * @param requestUriParameterSupported the requestUriParameterSupported to set 620 */ 621 public void setRequestUriParameterSupported(Boolean requestUriParameterSupported) { 622 this.requestUriParameterSupported = requestUriParameterSupported; 623 } 624 /** 625 * @return the requireRequestUriRegistration 626 */ 627 public Boolean getRequireRequestUriRegistration() { 628 return requireRequestUriRegistration; 629 } 630 /** 631 * @param requireRequestUriRegistration the requireRequestUriRegistration to set 632 */ 633 public void setRequireRequestUriRegistration(Boolean requireRequestUriRegistration) { 634 this.requireRequestUriRegistration = requireRequestUriRegistration; 635 } 636 /** 637 * @return the opPolicyUri 638 */ 639 public String getOpPolicyUri() { 640 return opPolicyUri; 641 } 642 /** 643 * @param opPolicyUri the opPolicyUri to set 644 */ 645 public void setOpPolicyUri(String opPolicyUri) { 646 this.opPolicyUri = opPolicyUri; 647 } 648 /** 649 * @return the opTosUri 650 */ 651 public String getOpTosUri() { 652 return opTosUri; 653 } 654 /** 655 * @param opTosUri the opTosUri to set 656 */ 657 public void setOpTosUri(String opTosUri) { 658 this.opTosUri = opTosUri; 659 } 660 661 public String getRevocationEndpointUri() { 662 return revocationEndpointUri; 663 } 664 public void setRevocationEndpointUri(String revocationEndpointUri) { 665 this.revocationEndpointUri = revocationEndpointUri; 666 } 667 668 public UserInfoTokenMethod getUserInfoTokenMethod() { 669 return userInfoTokenMethod; 670 } 671 public void setUserInfoTokenMethod(UserInfoTokenMethod userInfoTokenMethod) { 672 this.userInfoTokenMethod = userInfoTokenMethod; 673 } 674 @Override 675 public int hashCode() { 676 final int prime = 31; 677 int result = 1; 678 result = prime 679 * result 680 + ((acrValuesSupported == null) ? 0 : acrValuesSupported 681 .hashCode()); 682 result = prime 683 * result 684 + ((authorizationEndpointUri == null) ? 0 685 : authorizationEndpointUri.hashCode()); 686 result = prime 687 * result 688 + ((checkSessionIframe == null) ? 0 : checkSessionIframe 689 .hashCode()); 690 result = prime 691 * result 692 + ((claimTypesSupported == null) ? 0 : claimTypesSupported 693 .hashCode()); 694 result = prime 695 * result 696 + ((claimsLocalesSupported == null) ? 0 697 : claimsLocalesSupported.hashCode()); 698 result = prime 699 * result 700 + ((claimsParameterSupported == null) ? 0 701 : claimsParameterSupported.hashCode()); 702 result = prime * result 703 + ((claimsSupported == null) ? 0 : claimsSupported.hashCode()); 704 result = prime 705 * result 706 + ((displayValuesSupported == null) ? 0 707 : displayValuesSupported.hashCode()); 708 result = prime 709 * result 710 + ((endSessionEndpoint == null) ? 0 : endSessionEndpoint 711 .hashCode()); 712 result = prime 713 * result 714 + ((grantTypesSupported == null) ? 0 : grantTypesSupported 715 .hashCode()); 716 result = prime 717 * result 718 + ((idTokenEncryptionAlgValuesSupported == null) ? 0 719 : idTokenEncryptionAlgValuesSupported.hashCode()); 720 result = prime 721 * result 722 + ((idTokenEncryptionEncValuesSupported == null) ? 0 723 : idTokenEncryptionEncValuesSupported.hashCode()); 724 result = prime 725 * result 726 + ((idTokenSigningAlgValuesSupported == null) ? 0 727 : idTokenSigningAlgValuesSupported.hashCode()); 728 result = prime 729 * result 730 + ((introspectionEndpointUri == null) ? 0 731 : introspectionEndpointUri.hashCode()); 732 result = prime * result + ((issuer == null) ? 0 : issuer.hashCode()); 733 result = prime * result + ((jwksUri == null) ? 0 : jwksUri.hashCode()); 734 result = prime * result 735 + ((opPolicyUri == null) ? 0 : opPolicyUri.hashCode()); 736 result = prime * result 737 + ((opTosUri == null) ? 0 : opTosUri.hashCode()); 738 result = prime 739 * result 740 + ((registrationEndpointUri == null) ? 0 741 : registrationEndpointUri.hashCode()); 742 result = prime 743 * result 744 + ((requestObjectEncryptionAlgValuesSupported == null) ? 0 745 : requestObjectEncryptionAlgValuesSupported.hashCode()); 746 result = prime 747 * result 748 + ((requestObjectEncryptionEncValuesSupported == null) ? 0 749 : requestObjectEncryptionEncValuesSupported.hashCode()); 750 result = prime 751 * result 752 + ((requestObjectSigningAlgValuesSupported == null) ? 0 753 : requestObjectSigningAlgValuesSupported.hashCode()); 754 result = prime 755 * result 756 + ((requestParameterSupported == null) ? 0 757 : requestParameterSupported.hashCode()); 758 result = prime 759 * result 760 + ((requestUriParameterSupported == null) ? 0 761 : requestUriParameterSupported.hashCode()); 762 result = prime 763 * result 764 + ((requireRequestUriRegistration == null) ? 0 765 : requireRequestUriRegistration.hashCode()); 766 result = prime 767 * result 768 + ((responseTypesSupported == null) ? 0 769 : responseTypesSupported.hashCode()); 770 result = prime 771 * result 772 + ((revocationEndpointUri == null) ? 0 : revocationEndpointUri 773 .hashCode()); 774 result = prime * result 775 + ((scopesSupported == null) ? 0 : scopesSupported.hashCode()); 776 result = prime 777 * result 778 + ((serviceDocumentation == null) ? 0 : serviceDocumentation 779 .hashCode()); 780 result = prime 781 * result 782 + ((subjectTypesSupported == null) ? 0 : subjectTypesSupported 783 .hashCode()); 784 result = prime 785 * result 786 + ((tokenEndpointAuthMethodsSupported == null) ? 0 787 : tokenEndpointAuthMethodsSupported.hashCode()); 788 result = prime 789 * result 790 + ((tokenEndpointAuthSigningAlgValuesSupported == null) ? 0 791 : tokenEndpointAuthSigningAlgValuesSupported.hashCode()); 792 result = prime 793 * result 794 + ((tokenEndpointUri == null) ? 0 : tokenEndpointUri.hashCode()); 795 result = prime 796 * result 797 + ((uiLocalesSupported == null) ? 0 : uiLocalesSupported 798 .hashCode()); 799 result = prime * result 800 + ((userInfoUri == null) ? 0 : userInfoUri.hashCode()); 801 result = prime 802 * result 803 + ((userinfoEncryptionAlgValuesSupported == null) ? 0 804 : userinfoEncryptionAlgValuesSupported.hashCode()); 805 result = prime 806 * result 807 + ((userinfoEncryptionEncValuesSupported == null) ? 0 808 : userinfoEncryptionEncValuesSupported.hashCode()); 809 result = prime 810 * result 811 + ((userinfoSigningAlgValuesSupported == null) ? 0 812 : userinfoSigningAlgValuesSupported.hashCode()); 813 return result; 814 } 815 @Override 816 public boolean equals(Object obj) { 817 if (this == obj) { 818 return true; 819 } 820 if (obj == null) { 821 return false; 822 } 823 if (getClass() != obj.getClass()) { 824 return false; 825 } 826 ServerConfiguration other = (ServerConfiguration) obj; 827 if (acrValuesSupported == null) { 828 if (other.acrValuesSupported != null) { 829 return false; 830 } 831 } else if (!acrValuesSupported.equals(other.acrValuesSupported)) { 832 return false; 833 } 834 if (authorizationEndpointUri == null) { 835 if (other.authorizationEndpointUri != null) { 836 return false; 837 } 838 } else if (!authorizationEndpointUri 839 .equals(other.authorizationEndpointUri)) { 840 return false; 841 } 842 if (checkSessionIframe == null) { 843 if (other.checkSessionIframe != null) { 844 return false; 845 } 846 } else if (!checkSessionIframe.equals(other.checkSessionIframe)) { 847 return false; 848 } 849 if (claimTypesSupported == null) { 850 if (other.claimTypesSupported != null) { 851 return false; 852 } 853 } else if (!claimTypesSupported.equals(other.claimTypesSupported)) { 854 return false; 855 } 856 if (claimsLocalesSupported == null) { 857 if (other.claimsLocalesSupported != null) { 858 return false; 859 } 860 } else if (!claimsLocalesSupported.equals(other.claimsLocalesSupported)) { 861 return false; 862 } 863 if (claimsParameterSupported == null) { 864 if (other.claimsParameterSupported != null) { 865 return false; 866 } 867 } else if (!claimsParameterSupported 868 .equals(other.claimsParameterSupported)) { 869 return false; 870 } 871 if (claimsSupported == null) { 872 if (other.claimsSupported != null) { 873 return false; 874 } 875 } else if (!claimsSupported.equals(other.claimsSupported)) { 876 return false; 877 } 878 if (displayValuesSupported == null) { 879 if (other.displayValuesSupported != null) { 880 return false; 881 } 882 } else if (!displayValuesSupported.equals(other.displayValuesSupported)) { 883 return false; 884 } 885 if (endSessionEndpoint == null) { 886 if (other.endSessionEndpoint != null) { 887 return false; 888 } 889 } else if (!endSessionEndpoint.equals(other.endSessionEndpoint)) { 890 return false; 891 } 892 if (grantTypesSupported == null) { 893 if (other.grantTypesSupported != null) { 894 return false; 895 } 896 } else if (!grantTypesSupported.equals(other.grantTypesSupported)) { 897 return false; 898 } 899 if (idTokenEncryptionAlgValuesSupported == null) { 900 if (other.idTokenEncryptionAlgValuesSupported != null) { 901 return false; 902 } 903 } else if (!idTokenEncryptionAlgValuesSupported 904 .equals(other.idTokenEncryptionAlgValuesSupported)) { 905 return false; 906 } 907 if (idTokenEncryptionEncValuesSupported == null) { 908 if (other.idTokenEncryptionEncValuesSupported != null) { 909 return false; 910 } 911 } else if (!idTokenEncryptionEncValuesSupported 912 .equals(other.idTokenEncryptionEncValuesSupported)) { 913 return false; 914 } 915 if (idTokenSigningAlgValuesSupported == null) { 916 if (other.idTokenSigningAlgValuesSupported != null) { 917 return false; 918 } 919 } else if (!idTokenSigningAlgValuesSupported 920 .equals(other.idTokenSigningAlgValuesSupported)) { 921 return false; 922 } 923 if (introspectionEndpointUri == null) { 924 if (other.introspectionEndpointUri != null) { 925 return false; 926 } 927 } else if (!introspectionEndpointUri 928 .equals(other.introspectionEndpointUri)) { 929 return false; 930 } 931 if (issuer == null) { 932 if (other.issuer != null) { 933 return false; 934 } 935 } else if (!issuer.equals(other.issuer)) { 936 return false; 937 } 938 if (jwksUri == null) { 939 if (other.jwksUri != null) { 940 return false; 941 } 942 } else if (!jwksUri.equals(other.jwksUri)) { 943 return false; 944 } 945 if (opPolicyUri == null) { 946 if (other.opPolicyUri != null) { 947 return false; 948 } 949 } else if (!opPolicyUri.equals(other.opPolicyUri)) { 950 return false; 951 } 952 if (opTosUri == null) { 953 if (other.opTosUri != null) { 954 return false; 955 } 956 } else if (!opTosUri.equals(other.opTosUri)) { 957 return false; 958 } 959 if (registrationEndpointUri == null) { 960 if (other.registrationEndpointUri != null) { 961 return false; 962 } 963 } else if (!registrationEndpointUri 964 .equals(other.registrationEndpointUri)) { 965 return false; 966 } 967 if (requestObjectEncryptionAlgValuesSupported == null) { 968 if (other.requestObjectEncryptionAlgValuesSupported != null) { 969 return false; 970 } 971 } else if (!requestObjectEncryptionAlgValuesSupported 972 .equals(other.requestObjectEncryptionAlgValuesSupported)) { 973 return false; 974 } 975 if (requestObjectEncryptionEncValuesSupported == null) { 976 if (other.requestObjectEncryptionEncValuesSupported != null) { 977 return false; 978 } 979 } else if (!requestObjectEncryptionEncValuesSupported 980 .equals(other.requestObjectEncryptionEncValuesSupported)) { 981 return false; 982 } 983 if (requestObjectSigningAlgValuesSupported == null) { 984 if (other.requestObjectSigningAlgValuesSupported != null) { 985 return false; 986 } 987 } else if (!requestObjectSigningAlgValuesSupported 988 .equals(other.requestObjectSigningAlgValuesSupported)) { 989 return false; 990 } 991 if (requestParameterSupported == null) { 992 if (other.requestParameterSupported != null) { 993 return false; 994 } 995 } else if (!requestParameterSupported 996 .equals(other.requestParameterSupported)) { 997 return false; 998 } 999 if (requestUriParameterSupported == null) { 1000 if (other.requestUriParameterSupported != null) { 1001 return false; 1002 } 1003 } else if (!requestUriParameterSupported 1004 .equals(other.requestUriParameterSupported)) { 1005 return false; 1006 } 1007 if (requireRequestUriRegistration == null) { 1008 if (other.requireRequestUriRegistration != null) { 1009 return false; 1010 } 1011 } else if (!requireRequestUriRegistration 1012 .equals(other.requireRequestUriRegistration)) { 1013 return false; 1014 } 1015 if (responseTypesSupported == null) { 1016 if (other.responseTypesSupported != null) { 1017 return false; 1018 } 1019 } else if (!responseTypesSupported.equals(other.responseTypesSupported)) { 1020 return false; 1021 } 1022 if (revocationEndpointUri == null) { 1023 if (other.revocationEndpointUri != null) { 1024 return false; 1025 } 1026 } else if (!revocationEndpointUri.equals(other.revocationEndpointUri)) { 1027 return false; 1028 } 1029 if (scopesSupported == null) { 1030 if (other.scopesSupported != null) { 1031 return false; 1032 } 1033 } else if (!scopesSupported.equals(other.scopesSupported)) { 1034 return false; 1035 } 1036 if (serviceDocumentation == null) { 1037 if (other.serviceDocumentation != null) { 1038 return false; 1039 } 1040 } else if (!serviceDocumentation.equals(other.serviceDocumentation)) { 1041 return false; 1042 } 1043 if (subjectTypesSupported == null) { 1044 if (other.subjectTypesSupported != null) { 1045 return false; 1046 } 1047 } else if (!subjectTypesSupported.equals(other.subjectTypesSupported)) { 1048 return false; 1049 } 1050 if (tokenEndpointAuthMethodsSupported == null) { 1051 if (other.tokenEndpointAuthMethodsSupported != null) { 1052 return false; 1053 } 1054 } else if (!tokenEndpointAuthMethodsSupported 1055 .equals(other.tokenEndpointAuthMethodsSupported)) { 1056 return false; 1057 } 1058 if (tokenEndpointAuthSigningAlgValuesSupported == null) { 1059 if (other.tokenEndpointAuthSigningAlgValuesSupported != null) { 1060 return false; 1061 } 1062 } else if (!tokenEndpointAuthSigningAlgValuesSupported 1063 .equals(other.tokenEndpointAuthSigningAlgValuesSupported)) { 1064 return false; 1065 } 1066 if (tokenEndpointUri == null) { 1067 if (other.tokenEndpointUri != null) { 1068 return false; 1069 } 1070 } else if (!tokenEndpointUri.equals(other.tokenEndpointUri)) { 1071 return false; 1072 } 1073 if (uiLocalesSupported == null) { 1074 if (other.uiLocalesSupported != null) { 1075 return false; 1076 } 1077 } else if (!uiLocalesSupported.equals(other.uiLocalesSupported)) { 1078 return false; 1079 } 1080 if (userInfoUri == null) { 1081 if (other.userInfoUri != null) { 1082 return false; 1083 } 1084 } else if (!userInfoUri.equals(other.userInfoUri)) { 1085 return false; 1086 } 1087 if (userinfoEncryptionAlgValuesSupported == null) { 1088 if (other.userinfoEncryptionAlgValuesSupported != null) { 1089 return false; 1090 } 1091 } else if (!userinfoEncryptionAlgValuesSupported 1092 .equals(other.userinfoEncryptionAlgValuesSupported)) { 1093 return false; 1094 } 1095 if (userinfoEncryptionEncValuesSupported == null) { 1096 if (other.userinfoEncryptionEncValuesSupported != null) { 1097 return false; 1098 } 1099 } else if (!userinfoEncryptionEncValuesSupported 1100 .equals(other.userinfoEncryptionEncValuesSupported)) { 1101 return false; 1102 } 1103 if (userinfoSigningAlgValuesSupported == null) { 1104 if (other.userinfoSigningAlgValuesSupported != null) { 1105 return false; 1106 } 1107 } else if (!userinfoSigningAlgValuesSupported 1108 .equals(other.userinfoSigningAlgValuesSupported)) { 1109 return false; 1110 } 1111 return true; 1112 } 1113 1114 1115}