使用OpenID的ASP.NET MVC多站点SSO

Jas*_*zek 12 openid asp.net-mvc single-sign-on

我正在为一系列网站制定计划,这些网站将在其中共享用户帐户信息.这个想法是,一旦用户使用他们的OpenID登录,他们就可以访问任何网站,并且知道他们是谁.

我可以采用哪些常见模式/最佳实践来实现这一目标?

And*_*ott 12

如果所有站点在其URL中共享公共主机名,则可以设置auth cookie(FormsAuthentication.SetAuthCookie),将cookie的路径指定为"/",以便所有站点都可以看到用户已登录.

如果网站没有共享一个共同的主机名,我认为真正"一旦登录,在任何地方(在您的网站环内)登录"的唯一方法是,所有身份验证都只发生在一个站点上(也许一个专用于验证用户),另一个站点将用户重定向到该站点进行身份验证,然后该站点将重定向回来.实质上,该auth站点成为身份提供者,几乎完全填充OpenID提供者的角色(事实上,DotNetOpenAuth可用于此目的).由于您的目标是让用户使用其OpenID登录,因此该auth站点上的OpenID Provider本身可以使用OpenID对用户进行身份验证.您可以编写自己的纯委托OpenID提供程序,只要auth请求中的Realm是您信任的站点环之一,它就会立即响应checkid_immediate请求.因此,您可以在所有网站上实现单点登录.