c# - 实现 OpenID : identifying users

标签 c# .net authentication openid dotnetopenauth

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

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

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

最佳答案

因为你的标签表明你的语言是 C#,我推荐 DotNetOpenAuth .它是免费的,并且包含一些示例,这些示例将向您展示如何获取您可以用来区分用户的 token (在 OpenID 术语中称为声明标识符)。

如果您正在使用 OpenIdTextBoxOpenIdLogin 控件,要获得 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/

相关文章:

c# - 具有不同返回类型的方法重载

c# - 将 TextBox 的文本属性绑定(bind)到 TextBlock 的附加属性,如 Grid.Row

c# - 从集合中自动创建属性

c# - .NET 中的动画效果?

c# - 连接通用 .Net 方法参数的条件逻辑

java - Firebase 身份验证中的登录 Activity 不是从新 Activity 启动的

javascript - Meteor - 设置登录用户

android - 根据条款在 Flutter 中创建 Sign-in-with-Google 按钮

C# 运算符 ?并抛出异常

c# - 如何使用 C# ASP.NET Core 应用程序通过 Elastic Beanstalk 设置对特定文件夹的权限?