我想使用“直接访问授权”对KeyCloak进行身份验证:https://www.keycloak.org/docs/latest/server_admin/index.html#resource-owner-password-credentials-grant-direct-access-grants
当keyclok自己管理用户和密码时,我的工作就像一个魅力。
但是,我的场景不同:
我希望钥匙斗篷充当一些外部 IDP 的经纪人。KeyCloak具有身份代理功能 - 但仅适用于“授权代码流” - 将用户重定向到外部IDP登录表单。我有移动应用程序,并希望使用“直接访问授权” - 以便应用程序与 keycloak 配合以验证用户 - 并且 keycloak 作为经纪人,在外部 IDP 中对此用户进行身份验证(使用 openid-connect)
如何实现这样的场景?我知道开箱即用是不可能的——但是也许有人可以建议如何编写一个keycloak的扩展来实现这个场景?
这是一个真实的用例,不幸的是Keycloak没有解决这个问题的直接方法。AWS的“服务帐户的IAM角色”功能基于令牌交换,使用外部IDP进行直接访问授权。我发现了这个关于如何解决Keycloak中缺乏支持的讨论,但不确定它是否解决了所有用例-https://lists . JBoss . org/piper mail/key cloak-user/2017-January/009272 . html
您是否坚持使用直接访问授权作为移动应用程序中的用户身份验证方法?在我看来,当IDP是第三方服务时,您需要使用授权代码流,因为它不会提供API来验证用户身份,即使是您自己的(第一方)IDP,最好使用授权代码流,如OAuth 2.0安全最佳当前实践第2.4节所述。
要在移动应用中实现授权代码流,您需要使用应用内浏览器选项卡显示IDP提供的登录屏幕。有关详细信息,请参阅RFC 8252:OAuth 2.0 for Mobile and Native Apps。
无论你试图通过这种方式实现什么,它都直接违背了OAuth和OpenID Connect的设计初衷。使用访问令牌的整体思想是允许某个依赖方(如移动应用程序)代表用户与服务进行交互,而无需查看用户的凭证(如密码)。
这样想吧。假设你的手机上有一些应用程序。它可以利用谷歌的某些服务。为了做到这一点,它允许您登录谷歌并授予应用程序访问权限。现在,你想直接将你的谷歌电子邮件和密码输入应用程序吗?当然不是。这可能会让它完全控制你的谷歌账户、使用你的谷歌身份的其他应用程序和网站,也可能是允许你通过谷歌钱包付款的服务……简单地将一些手机应用程序交给你的谷歌登录将是疯狂的。
因此,使用OAuth2或OpenID Connect,您可以使用授权代码流或隐式流将用户重定向到身份提供者(在我们的示例中为Google ),在那里他们将完成登录过程,然后身份提供者重定向回应用程序或具有授权代码的站点,该授权代码可用于交换令牌或隐式流的令牌本身。
现在,当您自己的应用程序和您自己的身份提供程序(如KeyCloak)在您的控制之下时,这并不重要。您可以使用直接授权,让用户简单地在应用程序中输入他们的用户名和密码,因为您知道它不会试图窃取用户凭据来恶意使用您的服务。它们都在您的控制之下。在这种情况下,OAuth或OIDC有点矫枉过正,但您可以有单独的客户端来进行直接授权(您自己的应用程序)和授权代码流(使用您的服务的第三方应用程序)。然而,当你想使用密钥锁身份代理时,像谷歌或脸书这样的外部身份提供商不会提供直接授权并邀请应用程序窃取其用户的凭据。所以你不能以这种方式与他们互动。
根据你想要达到的目标,你可能会在代币交换过程中找到一些用处。但是,如果您希望您的用户使用他们的外部身份提供者凭据登录您的应用程序,而不进行重定向...不要。
现在我有了我的应用程序将嵌入另一个CRM平台的用法。假设这个CRM平台使用IDP1。因此,用户能够访问CRM,并将通过IDP1进行身份验证。然后,用户可以点击一个按钮,并被引导到我的应用程序。当然,我们不希望用户再次使用相同的IdP进行身份验证,但现在首先通过KeyCloak进行身份验证。 我的问题是,有没有一种方法让Keycloak使用用户访问CRM平台时收到的IDP1令牌,让Keycloak充
SAML是否有现成的实现将AEM作为另一个应用程序的IDP。我在谷歌上搜索了一下,发现AEM有一个OOTB配置,可以充当服务提供商(SP)。请提供信息或参考资料,使AEM成为IDP,以便授权AEM中的用户通过使用单点登录(SSO)使用其他服务提供商。提前谢谢。
当我通过登录路径中定义的登录表单登录时,我的防火墙配置工作正常。我想要的是登录时不查看或进入登录路径,而是直接发送用户名和密码参数来检查路径。 当我用用户名和密码向check_路径发出post请求时,symfony2似乎需要一个cookie,它是由smyfony2自己在login_路径中创建的。 有没有办法通过发送用户名和密码直接检查路径来登录?
我有一个密钥锁代理和两个身份提供者正在运行。目前,我在代理登录屏幕上看到了用户名和密码字段以及指向配置的身份提供者的2个链接。点击IP链接后,可以通过身份提供者登录。 如何禁用/删除用户名/密码字段,因为我只想提供身份提供程序来登录我的客户(无法直接通过代理登录)?
我试图使用keycloak只用于身份验证,并有自己的自定义过滤器用于授权。因此理想的流程是:首先,Keycloak filter对请求进行身份验证,并在上下文中设置身份验证对象。然后,我的自定义过滤器应该运行,它应该获得现有的身份验证对象,在该身份验证对象中添加权限,并将其设置回上下文中。 因此,首先,在speing引导应用程序中使用keycloak是正确的方法吗?如果是,那么如何使我的过滤器在过
在我使用RESTful webservices的Spring Boot应用程序中,我将Spring Security与Spring Social和一起配置了。 现在我有两种身份验证/授权方式--通过用户名/密码和通过社交网络,比如Twitter。 为了通过Spring MVC REST控制器中自己的RESTfulendpoint实现身份验证/授权,我添加了以下方法: 但我不确定在成功调用endpo