asp.net - 使用 OpenID 和 DotNetOpenID 在 ASP.NET 站点中对管理员进行身份验证的安全方法

标签 asp.net openid dotnetopenauth

在SO的鼓励下,我正在尝试编写一个使用OpenID进行用户身份验证的ASP.NET站点。这是一个常规的 WinForms 站点(不是 MVC.NET),使用 DotNetOpenId用于身份验证的库。

通过简单地将当前 session 的“ClaimedID”(在 OpenIdLogin_LoggedIn 事件中返回,作为成员 DotNetOpenId.RelyingParty、OpenIdEventArgs.Response.ClaimedIdentifier)与已知管理员的“ClaimedID”进行比较,允许/拒绝网站上的管理功能是否安全? OpenID(即我的)?

如果是这样,该 ID 可见(例如在开源代码中)是否安全,还是应该“隐藏”在配置文件或数据库行中? (我知道使其可配置是更好的设计,我的问题只是关于安全性。)

最佳答案

我的解决方案是遵循角色表的相同想法。对用户进行身份验证后,查找该用户的角色。如果用户在 UserRoles 表中具有“管理员”角色,那么他们可以执行管理员可以执行的任何操作。

我不会在我的应用程序中广播开放 ID。它们存储在表中。对于每个操作结果,我都会点击“用户”表,因为我还修改了我的表以存储各种用户状态信息。除了主页之外,我还需要从该表中获取一些用户信息。我使用的是 LINQ,因此我包含了 .LoadWith(),以便在序列化时加载用户及其角色列表。

关于asp.net - 使用 OpenID 和 DotNetOpenID 在 ASP.NET 站点中对管理员进行身份验证的安全方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56944/

相关文章:

c# - 如何使用Autofac在非引用项目中注册组件

asp.net - 在 .NET 中检查两个 double 的相等性时出现问题——这个方法有什么问题?

asp.net-mvc - 在 MVC.NET 的 AuthorizeServices 中,我在哪里设置角色?

java - openid4j 适用于 google openid 吗?

asp.net - DotNetOpenAuth.WebServerClient.XSRF- session 在回调期间发生变化

android - 从 android 发送 oauth token 导致 KeyNotFoundException

c# - ASP.NET Identity 2在保存扩展应用程序用户时插入重复数据或保存两次

c# - Server.Transfer 导致 Session 异常

asp.net-mvc - 具有 OpenId 选项的 MVC 个人用户帐户

c# - 在 asp.net 中集成 OpenID 时出错