[java-oidc-common] branch main updated: Add login_hint parameter to authn request
Phil Smart
philip.smart at jisc.ac.uk
Tue Mar 14 15:58:22 UTC 2023
This is an automated email from the git hooks/post-receive script.
philsmart pushed a commit to branch main
in repository java-oidc-common.
View the commit online:
http://git.shibboleth.net/view/?p=java-oidc-common.git;a=commit;h=a1f8c383828323fd35fb77b61c8e70023404b097
The following commit(s) were added to refs/heads/main by this push:
new a1f8c38 Add login_hint parameter to authn request
a1f8c38 is described below
commit a1f8c383828323fd35fb77b61c8e70023404b097
Author: Phil Smart <philip.smart at jisc.ac.uk>
AuthorDate: Tue Mar 14 15:57:54 2023 +0000
Add login_hint parameter to authn request
- Add to message encoder
- Add to profile config
---
.../config/OIDCAuthorizationConfiguration.java | 38 ++++++++++++++++++++++
.../profile/core/OIDCAuthenticationRequest.java | 28 +++++++++++++++-
.../encoding/impl/AbstractOIDCMessageEncoder.java | 5 ++-
3 files changed, 69 insertions(+), 2 deletions(-)
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCAuthorizationConfiguration.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCAuthorizationConfiguration.java
index 5f406d3..ab8fbe9 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCAuthorizationConfiguration.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCAuthorizationConfiguration.java
@@ -132,6 +132,9 @@ public class OIDCAuthorizationConfiguration extends AbstractOIDCSSOConfiguration
/** Lookup function to determine the max_age of an authentication request. */
@Nonnull private Function<ProfileRequestContext,Duration> maxAuthenticationAgeLookupStrategy;
+
+ /** Lookup function to determine the login_hint of an authentication request.*/
+ @Nonnull private Function<ProfileRequestContext, String> loginHintLookupStrategy;
/**
* Constructor.
@@ -171,6 +174,7 @@ public class OIDCAuthorizationConfiguration extends AbstractOIDCSSOConfiguration
authorizationCodeClaimsSetManipulationStrategyLookupStrategy = FunctionSupport.constant(null);
maxAuthenticationAgeLookupStrategy = FunctionSupport.constant(null);
+ loginHintLookupStrategy = FunctionSupport.constant(null);
}
/**
@@ -858,5 +862,39 @@ public class OIDCAuthorizationConfiguration extends AbstractOIDCSSOConfiguration
@Nonnull final Function<ProfileRequestContext,Duration> strategy) {
maxAuthenticationAgeLookupStrategy = Constraint.isNotNull(strategy, "Lookup strategy cannot be null");
}
+
+ /**
+ * Set the lookup strategy for setting the login_hint.
+ *
+ * @param strategy lookup strategy
+ *
+ * @since 2.2.0
+ */
+ public void setLoginHintLookupStrategy(@Nonnull final Function<ProfileRequestContext, String> strategy) {
+ loginHintLookupStrategy = Constraint.isNotNull(loginHintLookupStrategy, "Login Hint strategy can not be null");
+ }
+
+ /**
+ * Set a fixed login_hint. Will apply to all requests.
+ *
+ * @param fixedLoginHint the login_hint
+ *
+ * @since 2.2.0
+ */
+ public void setLoginHint(final String fixedLoginHint) {
+ Constraint.isNotEmpty(fixedLoginHint, "Fixed login hint can not be null or empty");
+ loginHintLookupStrategy = FunctionSupport.constant(fixedLoginHint);
+ }
+
+ /**
+ * Get the login_hint to use.
+ *
+ * @param profileRequestContext profile request context
+ *
+ * @return the login_hint to use
+ */
+ @Nullable public String getLoginHint(@Nullable final ProfileRequestContext profileRequestContext) {
+ return loginHintLookupStrategy.apply(profileRequestContext);
+ }
}
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/core/OIDCAuthenticationRequest.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/core/OIDCAuthenticationRequest.java
index 141aecd..a6995a5 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/core/OIDCAuthenticationRequest.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/core/OIDCAuthenticationRequest.java
@@ -56,6 +56,9 @@ public class OIDCAuthenticationRequest extends OAuthAuthorizationRequest {
/** Does the OpenID Provider support the claims parameter? Typically taken from its metadata.*/
private boolean providerSupportsClaimsParameter;
+ /** Hint to the Authorization Server about the login identifier the End-User might use to log in.*/
+ @Nullable private String loginHint;
+
/**
*
* Constructor.
@@ -174,7 +177,30 @@ public class OIDCAuthenticationRequest extends OAuthAuthorizationRequest {
*/
public void setProviderSupportsClaimsParameter(final boolean flag) {
providerSupportsClaimsParameter = flag;
- }
+ }
+
+ /**
+ * Sets the login_hint authorisation request parameter.
+ *
+ * @param hint the login hint
+ *
+ * @since 2.2.0
+ */
+ public void setLoginHint(final String hint) {
+ loginHint = hint;
+
+ }
+
+ /**
+ * Get the login_hint parameter.
+ *
+ * @return the login_hint parameter
+ *
+ * @since 2.2.0
+ */
+ @Nullable public String getLoginHint() {
+ return loginHint;
+ }
//TODO others relating to sections 5.2, 5.5, 6, and 7.2.1
diff --git a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/encoding/impl/AbstractOIDCMessageEncoder.java b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/encoding/impl/AbstractOIDCMessageEncoder.java
index 3bb68f8..397057e 100644
--- a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/encoding/impl/AbstractOIDCMessageEncoder.java
+++ b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/encoding/impl/AbstractOIDCMessageEncoder.java
@@ -221,6 +221,9 @@ public abstract class AbstractOIDCMessageEncoder extends AbstractHttpServletResp
if (req.getMaxAge() != null && req.getMaxAge().toSeconds() > 0) {
params.add(new Pair<>("max_age", Long.toString(req.getMaxAge().toSeconds())));
}
+ if (req.getLoginHint() != null) {
+ params.add(new Pair<>("login_hint", req.getLoginHint()));
+ }
if (req.providerSupportsClaimsParameter()) {
// Add ACRs to claims if any before the claims are serialised
@@ -237,7 +240,7 @@ public abstract class AbstractOIDCMessageEncoder extends AbstractHttpServletResp
.collect(Collectors.toUnmodifiableList()));
params.add(new Pair<>("acr_values", acrString));
}
- //TODO: requestURI, includedGrantedScopes?, resource_uris, max_age?
+ //TODO: requestURI, includedGrantedScopes?, resource_uris?
if (!validateParams(params)) {
throw new MessageEncodingException("Authorization parameters are not valid");
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list