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