7

我工作的公司想向外界发布一个内部网站,但也想以某种简单的方式识别访问者。某些功能将对所有访问者可见,但大多数功能必须对经过身份验证的访问者可见。(并且某些功能仅限于管理员访问者。)虽然管理层正在考虑实施我们自己的身份验证系统,但我建议只使用已经可用的现有技术,并使用户名/密码的管理远离我们。(因为当我们谈论安全性时,我们只是业余爱好者。身份验证需要非常好。)

所以我从 Google 的OpenID开始,检查了他们提供的库。看起来很容易使用,我可以获得告诉我用户已通过身份验证的令牌。但是我如何识别这个用户,以便我可以将我们的个人资料信息链接到他的 ID/Token/Whatever?

我知道我遗漏了一些东西,所以为了简单起见:我只需要一些示例来说明如何使用 Google 对访问者进行身份验证,然后获取一些我可以用来永久链接到该用户的令牌。(因此,没有会话令牌。)然后此令牌可用于用户填写他/她的个人资料。

4

1 回答 1

4

由于您的标签表明您的语言是 C#,因此我推荐DotNetOpenAuth。它是免费的,并包含将向您展示如何获取令牌(在 OpenID 术语中称为声明标识符)的示例,您可以使用它来区分用户。

要获取 Claimed Identifier(您要查找的永久标识符),如果您使用OpenIdTextBoxorOpenIdLogin控件,只需处理其 LoggedIn 事件并获取 e.ClaimedIdentifier 属性。如果您以编程方式执行此操作(无控件),则该OpenIdRelyingParty.GetResponse()方法返回一个IAuthenticationResponse接口,该接口具有ClaimedIdentifier您可以获得的属性。

然后,您可以实现一个 ASP.NET RoleProvider(真的很简单),它允许一些 OpenID 声明的标识符属于管理员角色,从而允许您的标准 ASP.NET 授权技术根据个人的身份验证方式逐步锁定他们。

于 2009-06-19T13:46:10.773 回答