我工作的公司想要向外界发布一个内部网站,但也想以某种简单的方式识别访问者。有些功能对所有访问者都是可见的,但大多数功能必须对经过身份验证的访问者可见。 (并且某些功能仅限于管理员访问者。)虽然管理层正在考虑实现我们自己的身份验证系统,但我建议只使用现有的技术,该技术可以让我们远离用户名/密码的管理。 (因为我们在谈论安全时只是业余爱好者。身份验证需要非常好。)
所以我从 OpenID 开始来自谷歌并检查了他们提供的图书馆。看起来很容易使用,我可以获得告诉我用户已通过身份验证的 token 。但是我如何识别这个用户,以便我可以将我们的个人资料信息链接到他的 ID/Token/Whatever?
我知道我遗漏了一些东西,所以为了简单起见:我只需要一些示例来说明如何使用 Google 对访问者进行身份验证,然后取回一些我可以用来永久链接到该用户的 token 。 (因此,没有 session token 。)此 token 随后可用于用户填写他/她的个人资料。
最佳答案
因为你的标签表明你的语言是 C#,我推荐 DotNetOpenAuth .它是免费的,并且包含一些示例,这些示例将向您展示如何获取您可以用来区分用户的 token (在 OpenID 术语中称为声明标识符)。
如果您正在使用 OpenIdTextBox
或 OpenIdLogin
控件,要获得 Claimed Identifier(您正在寻找的永久标识符),只需处理其 LoggedIn 事件并获取e.ClaimedIdentifier 属性。如果您以编程方式执行此操作(无控件),则 OpenIdRelyingParty.GetResponse()
方法返回一个 IAuthenticationResponse
接口(interface),该接口(interface)具有 ClaimedIdentifier
属性你可以得到它。
然后您可以实现一个 ASP.NET RoleProvider(非常简单,真的),它将允许一些 OpenID 声明的标识符属于管理员角色,从而允许您的标准 ASP.NET 授权技术根据他们的方式逐步锁定个人已通过身份验证。
关于c# - 实现 OpenID : identifying users,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1017435/