Keycloak - 直接用户链接注册

31

我在本地机器上使用Keycloak设置了一个Web应用程序。由于我使用Keycloak作为SSO实现,在我的Web应用程序中,每当SIGNUP按钮被点击时,我希望用户被指向注册页面,而不是通过LOGIN页面。

以下是指向注册表单的示例URL,但它包含一个像会话ID一样随机生成的tab_id

https://site.test/auth/realms/custom/login-actions/authenticate?client_id=test&tab_id=qIdW92Bvwmk

我阅读了这个链接

是的,只要在登录(AuthorizationEndpoint)URL的结尾处使用“registrations”而不是“auth”即可。

但我的端点在https://site.test/auth/realms/custom/.well-known/openid-configuration中无法修改。


你解决了这个问题吗? - amitnair92
3个回答

43

您可以将按钮链接更改为此格式 -

http://<domain.com>/auth/realms/<realm-name>/protocol/openid-connect/registrations?client_id=<client_id>&response_type=code&scope=openid email&redirect_uri=http://<domain.com>/<redirect-path>&kc_locale=<two-digit-lang-code>

6
你能指出 Keycloak 文档中提到这一点的位置吗?我很难在文档中找到该 URL。 - Ali_MM
我猜他们参考了这个存档的邮件列表回复 - James
1
对于Keycloak v15,ui_locales而不是kc_locale对我设置语言有效。这是OIDC标准。此外,参考Keycloak文档:https://www.keycloak.org/docs/latest/server_admin/#_user_locale_selection - Yigitalp Ertem
2
redirect_uri 对我来说不起作用,至少在15.0.2版本中是这样。由于这不是被接受的答案,有人能否确认它是否有效?@Sundararajan KS 我会感激您提供链接。 - Lukino
1
这在我的18.0.0设置中不起作用。它会产生“无状态”错误。 - AscendingEagle
显示剩余3条评论

1
注册页面通过一个openid-connect端点公开,可以像标准认证屏幕一样访问。要构造正确的URL,您只需从.well-known auth端点中将URL中的openid-connect/auth替换为openid-connect/registrations即可。
    authEndpoint.replace("openid-connect/auth","openid-connect/registrations");

使用此端点,用户将被引导到注册屏幕而不是登录屏幕。
它没有在“.well-known/openid-configuration”中记录或公开,但您可以在源代码中看到它。
    public static UriBuilder registrationsUrl(UriBuilder baseUriBuilder) {
        UriBuilder uriBuilder = tokenServiceBaseUrl(baseUriBuilder);
        return uriBuilder.path(OIDCLoginProtocolService.class, "registrations");
    }

1
你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心中找到有关如何编写良好答案的更多信息。 - Community
什么是“replace”?这个回答如何解决问题? - AscendingEagle

0

对于 Keycloak 17,这对我有效:

http://<mykeycloakdomain.com>/realms//protocol/openid-connect/registrations?client_id=<myclient_id>&response_type=code&scope=openid+email&redirect_uri=https%3A%2F%2Fmywebsiteurl.com&kc_locale=


1
目前你的回答不够清晰,请编辑并添加更多细节,以帮助其他人理解它如何回答问题。你可以在帮助中心找到有关如何编写好答案的更多信息。 - Community
1
@Igor,请在您的答案中详细解释,以使其对其他用户更有用! - NanoPish
这会返回一个404错误。 - Harlin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接