2

我希望将 OpenID 实现为一组合作伙伴网站的提供者。问题是这个网站是为孩子(13 岁以下)准备的,所以我有需要处理的业务限制 - 主要是该帐户不能在任何非合作伙伴网站上使用(我们与每个批准的合作伙伴合作,以确保他们满足行业隐私/安全法规)。

过去我们推出了自己的会员和合作伙伴系统,但我想转向行业认可的引擎,让我们自己和我们的合作伙伴的生活更轻松。

那么,是否有一种内置方法可以限制 OpenID 仅访问某些站点,或者我是否需要对代码和权限进行一些深入的代码更改才能完成此操作?

4

3 回答 3

5

是的,一点没错。根据您的 dotnetopenid 标签,我认为这就是您正在使用的库,这很棒。进来的 IAuthenticationRequest 上有一个 Realm 属性。使用它来检查领域值是否出现在合作伙伴网站领域 URL 的白名单中。如果是,请继续执行正常的身份验证步骤并将 IAuthenticationRequest.IsAuthenticated 设置为 true 并返回。如果 Realm 未被识别,那么这个小于 13 岁的孩子正在尝试使用他们的 OpenID 登录到非合作伙伴站点,您可以设置 IsAuthenticated = false 并返回,这将中止他们的登录。

如果您对您的特定场景还有其他问题,请随时发送电子邮件至 dotnetopenid@googlegroups.com

于 2009-02-18T04:39:54.407 回答
2

这一切都取决于。
这在 OpenID 协议中是可能的 - 如果您的库支持它只是一个问题。在文档和配置文件中查找对站点登录权限的限制。
如果您只是自己编程,这相当容易 - 当您登录 OpenID 时,它会重定向到您的网站,看看您是否让用户登录。通常您会询问用户,但在您的情况下,您可以查看白名单以查看它是否被批准。

于 2009-02-18T04:04:07.270 回答
1

我自己还没有实现 OpenId,所以对此持保留态度。

当我为我的 OpenId 登录 yahoo 时,它会询问我是否真的希望他们向 stackoverflow.com 提供我的身份。此时,提供商(例如 yahoo,您)应该很容易查找目标站点并查看它是否是经过批准的合作伙伴,如果不是,则停止该过程。

于 2009-02-18T03:36:20.783 回答