如何在 Spring Security 中指定 Open ID Realm?

Posted

技术标签:

【中文标题】如何在 Spring Security 中指定 Open ID Realm?【英文标题】:How do I specify Open ID Realm in spring security? 【发布时间】:2011-02-05 05:18:23 【问题描述】:

我们在我们的应用程序中使用 Spring 安全性,支持基于用户名/密码的身份验证以及基于 Open id 的身份验证。

问题是 google 为指定的返回 url 提供了不同的开放 id,我们的应用程序中至少有 2 个不同的入口点,开放 id 配置到我们的系统中。

因此我们决定使用开放 ID 领域。

https://blog.***.com/2009/0...ue-per-domain/

http://groups.google.com/group/googl...unts-api?pli=1

如何将领域集成到我们的 spring 配置/代码中? 这就是我们在传统的 openid 库代码中的做法:

AuthRequest authReq = consumerManager.authenticate(discovered, someReturnToUrl,"http://www.example.com");

这可以为我们网站的不同网址提供相同的开放 ID。

我们的配置:

代码:

... 
<http auto-config="false"> 
    <!-- <intercept-url> tags are here  --> 
    <remember-me user-service-ref="someRememberedService" key="some key" /> 
    <form-login login-page="/Login.html" authentication-failure-url="/Login.html?error=true" always-use-default-target="false" default-target-url="/MainPage.html"/> 
    <openid-login authentication-failure-url="/Login.html?error=true" always-use-default-target="true" default-target-url="/MainPage.html" user-service-ref="someOpenIdUserService"/> 
</http> 
... 
<beans:bean id="openIdAuthenticationProvider" class="org.springframework.security.providers.openid.OpenIDAuthenticationProvider">
    <custom-authentication-provider />
    <beans:property name="userDetailsService" ref="openIdUserService"/>
</beans:bean>
<beans:bean id="openIdUserService" class="some.package.OpenIDUserDetailsService">
</beans:bean>
... 

【问题讨论】:

【参考方案1】:

这个问题真的很老了,没有一个答案就让它死掉真是太可惜了。 有几个教程,主要针对 SS 版本 3:

教程一:Spring Security 3 - OpenID Login with Google Provider

教程2:Exploring Google and OpenID login with Spring Security and Spring Roo

【讨论】:

以上是关于如何在 Spring Security 中指定 Open ID Realm?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Spring Security SAML 配置远程发现?

如何使用 spring 的 jdbcTemplate 在 SQL 查询中指定参数

Spring Security

如何在 Spring/Spring Boot pom.xml 中指定 Java 版本?

如何在spring data jpa查询中指定@lock超时?

如何在 Spring Messaging 中指定处理程序生成的内容类型?