Openid DotNetOpenAuth SSO示例行为
在OpenIdWebRingSso示例(PR(提供商)和RP(依赖方)-3.5.0.10357)上,如果我在PR上注销,它不会在RP上注销(在下一页请求中),并且在RP上注销不会触发在PR上注销 此外,当用户未经身份验证时,PR总是重定向到登录(询问用户名和密码)。当我在RP上浏览一个不需要身份验证的页面时,我需要的是一个检查用户是否经过身份验证的请求。如果是这样,请将用户登录到RP(这一部分很好),但如果不是这样,只需返回一个用户未经身份验证的响应,而不要求登录(除非我确实单击了登录按钮或尝试访问[授权]页面)。更新:已使用“request.Mode=0;”解决该部分 因此,我需要在RP上检查每个页面请求是否通过PR的身份验证,并且只在必要时请求密码。因此,问题是: 1) 我可以在样本或其他参考资料中找到此代码吗 2) 如果没有,将其放在MVC3应用程序上的最佳位置是: -httpModule? -在一个基本控制器上,并覆盖无效初始化? -OnActionExecuting(ActionFilterAttribute)? -其他地方 3) 这种方法是否适用于SSO(我为一家公司提供了5个不同的站点/域)Openid DotNetOpenAuth SSO示例行为,openid,single-sign-on,dotnetopenauth,Openid,Single Sign On,Dotnetopenauth,在OpenIdWebRingSso示例(PR(提供商)和RP(依赖方)-3.5.0.10357)上,如果我在PR上注销,它不会在RP上注销(在下一页请求中),并且在RP上注销不会触发在PR上注销 此外,当用户未经身份验证时,PR总是重定向到登录(询问用户名和密码)。当我在RP上浏览一个不需要身份验证的页面时,我需要的是一个检查用户是否经过身份验证的请求。如果是这样,请将用户登录到RP(这一部分很好),但如果不是这样,只需返回一个用户未经身份验证的响应,而不要求登录(除非我确实单击了登录按钮或尝试
提前谢谢 由于所有站点都属于同一家公司,并且共享对用户存储库(数据库)的访问权限,我决定采用一种不同的方法,这种方法简单得多,并且避免了过多的重定向:
- 受信任站点(白名单中的依赖方(RP))使用返回url向主站点(提供商)发出请求(重定向)
- 主站点确保请求(returnURL)来自域的白名单
- 记录用户(如果未记录,则显示登录表单),将用户标记为已登录数据库,并向用户数据库添加临时令牌
- 主站点返回(重定向)到带有令牌的RP
- RP使用令牌查看数据库,记录用户并删除令牌