Authentication 如何绕过KeyClope登录表单,直接跳转到IDP登录?

Authentication 如何绕过KeyClope登录表单,直接跳转到IDP登录?,authentication,keycloak,service-provider,idp,Authentication,Keycloak,Service Provider,Idp,我正在运行这个示例。我在UI中看到的第一件事是一个user/pass for,它带有一个使用代理的选项(下图) 有没有办法跳过这张表格直接去IDP 点击其中一个IDP后,我会得到一个如下的URL:http://localhost:8080/auth/realms/saml-代理身份验证领域/broker/sanity idp/login?客户端\u id=saml代理身份验证&代码= 我尝试直接使用下面的url(没有代码),但出现了一个错误。 (http://localhost:8080/aut

我正在运行这个示例。我在UI中看到的第一件事是一个user/pass for,它带有一个使用代理的选项(下图)

有没有办法跳过这张表格直接去IDP

点击其中一个IDP后,我会得到一个如下的URL:
http://localhost:8080/auth/realms/saml-代理身份验证领域/broker/sanity idp/login?客户端\u id=saml代理身份验证&代码=

我尝试直接使用下面的url(没有代码),但出现了一个错误。 (
http://localhost:8080/auth/realms/saml-代理身份验证领域/broker/sanity idp/login?客户端\u id=saml代理身份验证

你知道如何绕过keydape auth,通过SP(代理)直接进入IDP吗?谢谢

更新:My TL找到了一个静态解决方案,将IDP ID放入
身份提供程序重定向程序执行下的浏览器身份验证流中。但是,我们正试图找到一种动态的方法来实现这一点。查看了,但找不到使saml broker身份验证示例与之配合使用的方法:(


为了通过KeyClope代理重定向到IDP登录页面,您可以使用以下URL:

如您所述,您可以绕过KeyClope屏幕,通过为整个领域设置默认身份提供程序直接转到IDP:

可以自动重定向到身份提供程序而不是显示登录表单。若要启用此功能,请转到管理控制台中的“身份验证”页面并选择浏览器流。然后单击身份提供程序重定向程序身份验证程序的“配置”。将默认身份提供程序设置为身份提供程序的别名您希望自动将用户重定向到

()

不幸的是,这是针对整个领域的,不能动态或按SP进行设置。
kc_idp_hint
似乎是解决方案,但它仅适用于OIDC:

OIDC应用程序可以通过指定要在哪个身份提供程序上使用的提示来绕过KeyClope登录页面

这是通过在授权代码流授权端点中设置
kc_idp_hint
查询参数来完成的

()

似乎有一个功能请求要添加对SAML的
kc_idp_hint
支持,但仍未解决:

作为一种解决方法,您可以创建一个新领域,并为该领域设置默认身份提供程序。这样,如果您有需要代理到不同IDP的SP,您可以在适当的领域中设置它们


缺点是每个领域都充当其自己的IdP,因此它有自己的实体ID、公钥等。您每次都必须有效地重新设置SP,使其默认为不同的IdP。

要将身份提供程序设置为默认身份提供程序,忽略KeyClope登录表单,只需转到“身份验证”菜单>“身份提供程序重定向程序操作”nk>将默认身份提供程序设置为所需提供程序的别名。一旦从浏览器localhost:8080/realm[…]/帐户打开,您将自动重定向到您的提供程序登录页。

在搜索了很多次后,我使用以下代码行成功完成了此操作:

keycloakAuth.login({idpHint: 'facebook'});
密钥验证是:

keycloakAuth = Keycloak({
    url: environment.keycloakRootUrl,
    realm: 'realm',
    clientId: 'client-id',
    'ssl-required': 'external',
    'public-client': true
});

无需将其设置为默认身份提供者

这是一篇旧文章,但对某些人来说可能仍然是真实的

  • 对于KeyClope管理面板中设置的身份提供程序登录页面上的静态重定向,请将名称从
    身份提供程序->名称设置为
    身份验证->身份提供程序重定向程序->配置->默认身份提供程序
    。之后,请求
    https://{KK}/realms/{RM}/protocol/openid connect/auth?..
    会将您重定向到身份提供商,例如facebook

  • 动态选择idp。如果您不想进入idp登录页面,您可以在KK中添加额外的参数
    kc_idp_hint
    ,例如


  • 您还可以在类IdentityProviderAuthenticator上扩展和编写新的验证器spi,在该类中,authenticate根据请求url属性执行重定向()

    否则,在大多数情况下,资源url中的kc_idp_提示将有所帮助

    E.g https://resourceserver/resourcepath?kc_idp_hint=google
    

    为了跳过SSO,keydape init首先将idp_提示传递给login

     const options: KeycloakLoginOptions = {
          idpHint: ' ',
        };
        keycloak.init({}).then(() => {
          keycloak.login(options).then(() => {
            onSuccess();
          });
        });
    

    邮件列表:我有一个类似的任务,但用于用户身份验证。我不确定它是否有帮助。以防万一,我们应该在哪里编写此代码?它是SPI或任何javascript策略的一部分。您能否分享更多详细信息。您的代码看起来很有希望,但不清楚将此代码放置在何处。我正在编写一个角度应用程序。每当用户单击d在要登录的按钮上,我的答案的第一个代码被触发。第二个代码在一个服务上。当应用程序被加载时,它用我答案的第二个代码的值设置变量“keydapeauth”。被实例化的类“keydape”是一个javascript(keydape.js)keydove在安装时提供的代码。这个问题是针对SAML的。这对SAML有效吗?例如,Facebook不使用SAML,而是使用OIDC。您使用了什么程序包或库url来创建实例keydoveauth?这个问题是针对SAML的。不幸的是,
    kc_idp_hint
    似乎只对SAML有效OIDC客户端,您可以从您答案的URL中看到,因为它们包含
    openid connect
    。这可以工作,但它适用于整个领域。问题的作者想要一种动态方式来实现这一点:“但是,我们正试图找到一种动态方式。”您好Sundar Rajan,您可以分享一个自定义标识ProviderAuthenticator的示例吗?因为我计划使用自己的用户联合实现进行基本电子邮件验证,但要进行身份验证,我需要依赖在realm下配置的多个IDP。Athena,您也可以链接到文档吗?谢谢。没有文档,我刚刚读了keydape js的源代码。
     const options: KeycloakLoginOptions = {
          idpHint: ' ',
        };
        keycloak.init({}).then(() => {
          keycloak.login(options).then(() => {
            onSuccess();
          });
        });