【问题标题】:DotNetOpenAuth SSO sample behaviorDotNetOpenAuth SSO 示例行为
【发布时间】:2012-04-28 23:08:14
【问题描述】:

在 OpenIdWebRingSso 示例(PR(提供者)和 RP(依赖方)- 3.5.0.10357)上,如果我在 PR 上注销它不会在 RP 上注销我(在下一页请求上),并且注销在 RP 上不会触发在 PR 上的注销。

此外,当用户未通过身份验证时,PR 总是重定向到登录(询问用户名和密码)。在 RP 上浏览不需要身份验证的页面时,我需要的只是检查用户是否经过身份验证的请求。如果是这样,将用户登录到 RP(那部分很好),但如果不是,则只返回用户未通过身份验证的响应,而不要求登录(除非我确实单击登录按钮或尝试访问 [授权]页)。更新:用“request.Mode = 0;”解决了这部分问题

所以我需要在 RP 上检查每个页面请求天气是否已针对 PR 进行身份验证,并且仅在必要时询问密码。所以问题是:

1) 我可以在示例或其他参考资料中找到此代码吗?

2) 如果不是,将它放在 MVC3 应用程序上的最佳位置是什么: - http模块? - 在基本控制器上并覆盖无效初始化? - OnActionExecuting(ActionFilterAttribute)? - 别的地方?

3) 这种方法对 SSO 是否正确(我有 5 个不同的站点/域用于一家公司)?

提前致谢!

【问题讨论】:

    标签: openid single-sign-on dotnetopenauth


    【解决方案1】:

    由于所有网站都属于同一家公司并共享对 userRepository(数据库)的访问权限,因此我决定采用不同的方法,更简单,避免过多的重定向:

    • 受信任的站点(白名单中的依赖方 (RP))向主站点(提供者)发出请求(重定向)并返回 URL。
    • 主站点确保请求(returnURL)来自域白名单
    • 登录用户(如果未登录,则显示登录表单),将用户标记为登录数据库并将临时令牌添加到用户数据库。
    • 主站点返回(重定向)到带有令牌的 RP。
    • RP 使用令牌查看数据库,记录用户并删除令牌。

    SSOff 也很简单:只需将用户数据库中的每个请求检查到布尔记录 (userLogged) 中。没有重定向。注销时只需将记录 (userLogged) 更改为 false,每个站点都会知道。

    为了避免 RP 在用户登录(重定向)并在 SERP 上受到惩罚时始终检查提供程序,我仅在用户登录之后/如果用户登录后动态地将查询字符串 (?checklog=yes) 添加到白名单站点链接 url。因此,如果我在登录后从站点 A 转到站点 B,它将转到 siteB.com?checklog=yes,这将提示站点与提供商进行重定向以获取并记录用户……而谷歌将永远不会看到重定向。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-07
      • 2013-03-26
      • 2012-06-19
      相关资源
      最近更新 更多