当前位置: 首页 > 知识库问答 >
问题:

如何在运行时从数据库动态加载身份提供程序(IdP):Sprint Security SAML

弘志勇
2023-03-14

有没有办法在运行时从数据库添加新的 IdP,同时使用适用于 SAML 2.0 的 Spring 安全扩展

如何在运行时从用户处获取所需的属性,而无需重新启动服务器或应用程序,从而将新的身份提供者添加到Java Web应用程序中。

以及需要将哪些所有通用属性(如entityId、SSO身份验证URL和公共X.509证书)作为输入,以便在不重新启动服务器的情况下将新IdP添加到现有Web应用程序中。

共有1个答案

程英资
2023-03-14

您可以操作元数据管理器以动态添加新的 IdP 或删除现有的 IdP。

yourMetadataManagerBean.removeMetadataProvider(MetadataProvider provider)
yourMetadataManagerBean.addMetadataPRovider(MetadataProvider newProvider)

然后不要忘记通过调用刷新上下文

yourMetadataManagerBean.setRefreshRequired(true);
yourMetadataManagerBean.refreshMetadata();
 类似资料:
  • 我是Spring安全的新手,我想用数据库验证用户。我已经用jdbc创建了一个登录页面和一个身份验证提供程序,它检查用户是否存在于数据库中。但是我的代码没有这样做的问题是,它允许所有用户登录!我的代码怎么了?谢谢你的帮助。 这是我的安全会议。xml:

  • 我已经创建了身份提供程序,并且从浏览器中它工作正常。 参考:密钥斗篷身份提供程序后代理登录抛出错误 从浏览器,我可以使用外部IDP登录,如果外部IDP用户不在keycloak中,它会在keyclock中创建,这绝对没问题,并重定向到仪表板。 但我的问题是,我们如何用keycloak rest api实现这个流程? 是否有任何api用于使用外部IDP登录,并将获得外部IDP的令牌以及密钥斗篷的令牌?

  • 我想在应用程序启动时使用Spring ehCache将数据从数据库加载到缓存中,即在调用任何其他方法之前服务器启动时。我不想使用构造函数。请帮帮我。

  • 目前,我正在使用Spring Security编辑我的项目上SAML支持的现有实现。我有多个标识提供商,为此我将数据存储在数据库中。使用我的应用程序用户界面,我可以在运行时添加新的标识提供商,它将被添加到CachingMetadataManager中。之后,调用刷新元数据。然而,我有JKSKeyManager,它在应用程序启动时加载,并加载一个JKS密钥库,用于所有标识提供商的所有元数据。我希望用

  • 我从SAML基于服务提供商的SSO开始。由于用户必须在继续登录之前输入电子邮件,因此启动了一个状态变量并将其传递给SSO。它通过回调URL返回,因此再次进行检查以确保其正常。它可以抵御CSRF攻击。 现在IdP启动的SSO根本不允许我设置状态变量。登录从身份提供商开始,仅向应用提供一个认证令牌。我从一开始就不知道是哪个用户在进行身份验证。如果我删除状态变量检查,它也可能触发CSRF攻击。 我还在中

  • 有人知道TestNG如何根据为测试方法指定的数据提供者名称计算出数据提供者方法是什么吗? 我找到了这个解决方案:https://gist.github.com/ae6rt/3805639 但是,它没有考虑到数据提供者可能是: 在完全不同的类别中定义,或 在父类中定义,并且 该方法可以是静态的,也可以是非静态的 我试图自己破解一些东西,但后来我想我不可能是第一个试图解决这个问题的人,特别是因为显然T