OpenID Protocol
OpenID is an open, decentralized, free framework for user-centric digital identity. Users represent themselves using URIs. For more information see the http://www.openid.net.
This feature is deprecated and is scheduled to be removed in the future. If you can, consider using a more mainstream and recent authentication protocol.
CAS supports both the “dumb” and “smart” modes of the OpenID protocol. Dumb mode acts in a similar fashion to the existing CAS protocol. The smart mode differs in that it establishes an association between the client and the openId provider (OP) at the beginning. Thanks to that association and the key exchange done during association, information exchanged between the client and the provider are signed and verified using this key. There is no need for the final request (which is equivalent in CAS protocol to the ticket validation).
OpenID identifiers are URIs. The default mechanism in CAS support is an uri ending with the actual user login
(ie. http://my.cas.server/openid/myusername
where the actual user login id is myusername
).
This is not recommended and you should think of a more elaborated way of providing URIs to your users.
OpenID protocol is NOT the same thing as the OpenId Connect protocol whose details are documented here.
Configuration
Support is enabled by including the following dependency in the WAR overlay:
1
2
3
4
5
<dependency>
<groupId>org.apereo.cas</groupId>
<artifactId>cas-server-support-openid-webflow</artifactId>
<version>${cas.version}</version>
</dependency>
1
implementation "org.apereo.cas:cas-server-support-openid-webflow:${project.'cas.version'}"
1
2
3
4
5
6
7
8
9
dependencyManagement {
imports {
mavenBom "org.apereo.cas:cas-server-support-bom:${project.'cas.version'}"
}
}
dependencies {
implementation "org.apereo.cas:cas-server-support-openid-webflow"
}
1
2
3
4
5
6
7
8
9
10
dependencies {
/*
The following platform references should be included automatically and are listed here for reference only.
implementation enforcedPlatform("org.apereo.cas:cas-server-support-bom:${project.'cas.version'}")
implementation platform(org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES)
*/
implementation "org.apereo.cas:cas-server-support-openid-webflow"
}
The following settings and properties are available from the CAS configuration catalog:
cas.authn.openid.principal.principal-transformation.groovy.location=
The location of the resource. Resources can be URLS, or files found either on the classpath or outside somewhere in the file system. In the event the configured resource is a Groovy script, specially if the script set to reload on changes, you may need to adjust the total number ofinotify instances. On Linux, you may need to add the following line to /etc/sysctl.conf : fs.inotify.max_user_instances = 256 . You can check the current value via cat /proc/sys/fs/inotify/max_user_instances .
|
cas.authn.openid.principal.active-attribute-repository-ids=
Activated attribute repository identifiers that should be used for fetching attributes if attribute resolution is enabled. The list here may include identifiers separated by comma.
|
cas.authn.openid.principal.attribute-resolution-enabled=
Whether attribute repositories should be contacted to fetch person attributes. Defaults to true if not set.
|
cas.authn.openid.principal.principal-attribute=
Attribute name to use to indicate the identifier of the principal constructed. If the attribute is blank or has no values, the default principal id will be used determined by the underlying authentication engine. The principal id attribute usually is removed from the collection of attributes collected, though this behavior depends on the schematics of the underlying authentication strategy.
|
cas.authn.openid.principal.principal-resolution-conflict-strategy=last
In the event that the principal resolution engine resolves more than one principal, (specially if such principals in the chain have different identifiers), this setting determines strategy by which the principal id would be chosen from the chain. Accepted values are:
|
cas.authn.openid.principal.principal-resolution-failure-fatal=
When true, throws an error back indicating that principal resolution has failed and no principal can be found based on the authentication requirements. Otherwise, logs the condition as an error without raising a catastrophic error.
|
cas.authn.openid.principal.principal-transformation.blocking-pattern=
A regular expression that will be used against the username to match for blocking/forbidden values. If a match is found, an exception will be thrown and principal transformation will fail.
|
cas.authn.openid.principal.principal-transformation.case-conversion=NONE
Indicate whether the principal identifier should be transformed into upper-case, lower-case, etc. Available values are as follows:
|
cas.authn.openid.principal.principal-transformation.pattern=
A regular expression that will be used against the provided username for username extractions. On a successful match, the first matched group in the pattern will be used as the extracted username.
|
cas.authn.openid.principal.principal-transformation.prefix=
Prefix to add to the principal id prior to authentication.
|
cas.authn.openid.principal.principal-transformation.suffix=
Suffix to add to the principal id prior to authentication.
|
cas.authn.openid.principal.return-null=
Return a null principal object if no attributes can be found for the principal.
|
cas.authn.openid.principal.use-existing-principal-id=
Uses an existing principal id that may have already been established in order to run person directory queries. This is generally useful in situations where authentication is delegated to an external identity provider and a principal is first established to then query an attribute source.
|
cas.authn.openid.enforce-rp-id=false
Whether relying party identifies should be enforced. This is used during the realm verification process.
Deprecation status is |
cas.authn.openid.name=
Name of the underlying authentication handler.
Deprecation status is |
cas.authn.openid.order=
Order of the authentication handler in the chain.
Deprecation status is |