问题标签 [authentication]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
forms - 基于表单的网站身份验证权威指南
版主备注:
这个问题不适合我们的问答格式以及当前适用于 Stack Overflow的话题性规则。对于内容仍然有价值的此类问题,我们通常使用“历史锁定”。但是,此问题的答案得到积极维护,历史锁定不允许编辑答案。因此,已应用“wiki 答案”锁定以允许编辑答案。您应该假设存在通常由历史锁定处理的话题性问题(即这个问题不是 Stack Overflow 的话题性问题的一个很好的例子)。
网站基于表单的身份验证
我们认为 Stack Overflow 不应该只是针对非常具体的技术问题的资源,还应该提供有关如何解决常见问题变体的一般指南。“基于表单的网站身份验证”应该是此类实验的一个很好的主题。
它应包括以下主题:
- 如何登录
- 如何退出
- 如何保持登录状态
- 管理 cookie(包括推荐设置)
- SSL/HTTPS 加密
- 如何存储密码
- 使用秘密问题
- 忘记用户名/密码功能
- 使用nonce防止跨站点请求伪造 (CSRF)
- 开放ID
- “记住我”复选框
- 浏览器自动完成用户名和密码
- 秘密 URL(受摘要保护的公共URL )
- 检查密码强度
- 电子邮件验证
- 以及更多关于 基于表单的身份验证...
它不应包括以下内容:
- 角色和授权
- HTTP 基本认证
请通过以下方式帮助我们:
- 建议子主题
- 提交关于这个主题的好文章
- 编辑官方答案
asp.net - IIS 6/ASP.NET Windows 身份验证清单?
我一直无法让我的 ASP.NET 应用程序自动将用户登录到我正在构建的 Intranet 站点。无论是谷歌搜索还是我应用的实验,IE7 总是显示一个登录框。
我在 Web.config 中设置了 Windows 身份验证模式,禁用匿名访问并在 IIS 中配置了正确的默认域,但它仍然要求用户登录,更烦人的是,用户也需要提供域(DOMAIN\auser ),这会导致非技术访问者出现问题。感谢 Zeus 的密码记忆功能。
我不是网络管理员,因此有关 Active Directory 的某些内容可能设置不正确,或者可能只是我遗漏了一些非常简单的内容。请注意,我不想模拟用户,我只需要知道 IPrincipal.Name 属性与我的用户数据库中的有效记录相匹配,从而验证用户对我的应用程序的身份。
为此,拥有一份以这种方式协同工作的 AD、ASP.NET 和 IIS 的所有配置要求的清单将非常有用,作为调试的参考,并有望减少一些用户摩擦。
php - 如何使用纯 HTTP 身份验证和 PHP 在 Apache 下获取经过身份验证的用户名?
首先,让我们把安全考虑排除在外。我在 Apache 下使用简单的身份验证,用于一次性、仅供内部使用、非 Internet 连接的 LAN、PHP Web 应用程序。
如何在 PHP 中获取经过 HTTP 身份验证的用户名?
.net - 如何将 SSL 添加到使用 httplistener 的 .net 应用程序 - 它*不会*在 IIS 上运行
最近的粗体编辑
我正在使用 .netHttpListener
类,但我不会在 IIS 上运行此应用程序,也不会使用 ASP.net。这个网站描述了实际使用什么代码来实现与 asp.net 的 SSL,并且这个网站描述了如何设置证书(虽然我不确定它是否只适用于 IIS)。
类文档描述了各种类型的身份验证(基本、摘要、Windows 等)——它们都没有提到 SSL。它确实说如果使用 HTTPS,则需要设置服务器证书。这将是一个单行属性设置并HttpListener
计算其余部分吗?
简而言之,我需要知道如何设置证书以及如何修改代码以实现 SSL。
虽然在我尝试访问 HTTPS 时没有发生这种情况,但我确实注意到我的系统事件日志中有一个错误 - 源是“Schannel”,消息的内容是:
尝试访问 SSL 服务器凭证私钥时发生致命错误。从加密模块返回的错误代码是 0x80090016。
编辑:
到目前为止采取的步骤
- 在 C# 中创建了一个适用于 HTTP 连接的有效 HTTPListener(例如“ http://localhost:8089/foldername/ ”
- 使用 makecert.exe 创建证书
- 使用 certmgr.exe 添加了要信任的证书
- 使用 Httpcfg.exe 监听测试端口(例如 8090)上的 SSL 连接
- 通过 listener.Prefixes.Add( https://localhost:8090/foldername/ ")将端口 8080 添加到 HTTPListener ;
- 在浏览器中测试 HTTP 客户端连接,例如 ( http://localhost:8089/foldername/ ") 并收到正确的返回
- 在浏览器中测试了一个 HTTPS 客户端连接,例如(http://localhost:8090/foldername/)并收到“数据传输中断”(在 Firefox 中)
- Visual Studio 中的调试表明,当 HTTPS 连接启动时,接收请求的侦听器回调永远不会被命中 - 我看不到任何可以设置断点以更早捕获其他内容的地方。
- netstat 显示监听端口对 HTTPS 和 HTTP 都是开放的。尝试连接后,HTTPS 端口确实会进入 TIME_WAIT。
- Fiddler和HTTPAnalyzer没有捕捉到任何流量,我猜它在这个过程中还远远不够显示在那些 HTTP 分析工具中
问题
- 问题可能是什么?
- 是否有一段.Net 代码我丢失了(这意味着我必须在 C# 中做更多事情,而不是简单地向指向 HTTPS 的侦听器添加一个前缀,这就是我所做的)
- 在某处错过了配置步骤?
- 我还能做些什么来分析问题?
- 系统事件日志中的错误消息是否表明存在问题?如果是这样,它将如何修复?
asp.net - 我应该使用用户名还是用户 ID 来引用 ASP.NET 中经过身份验证的用户
所以在我的简单学习网站中,我使用了内置的 ASP.NET 身份验证系统。
我现在添加一个用户表来保存他的 zip、DOB 等内容。我的问题是:
- 在新表中,键应该是用户名(字符串)还是用户 ID,即他们在
asp_ tables
. - 如果最佳做法是使用那个丑陋的指南,有谁知道如何获得它?
System.Web.HttpContext.Current.User.Identity.Name
它似乎不像名称( )那样容易访问 - 如果您建议我既不使用(不是由 ASP.NET 身份验证提供的 guid 和 userName 字段),那么我该如何使用 ASP.NET 身份验证呢?我喜欢的一种选择是使用用户的电子邮件地址作为登录名,但是如何让 ASP.NET 身份验证系统使用电子邮件地址而不是用户名?(或者那里无事可做,只是我决定我“知道” userName 实际上是一个电子邮件地址?
请注意:
- 我不是在问如何在 .NET 中获取 GUID,我只是指
asp_ tables
作为 guid 中的 userID 列。 - 用户名在 ASP.NET 身份验证中是唯一的。
authentication - 登录ID用什么?
我们正处于对我们的产品进行重大改写的早期设计阶段。目前,我们的客户主要是企业。我们管理帐户。每个帐户的用户名都在自己的命名空间中,但这意味着我们不能在服务器之间移动资产。
我们想移动到单个命名空间。但这带来了唯一用户名的问题。
那么最好的主意是什么?
- 电子邮件地址(带验证)?
- 唯一的字母数字字符串(“johnsmith9234”)?
- 我们应该看看 OpenID 吗?
authentication - OpenID 属性交换 - 我应该使用它吗?
我的网站将仅使用 OpenID 进行身份验证。我想通过属性交换来拉取用户详细信息,但是属性交换似乎给 StackOverflow 带来了很多痛苦。
行业现状如何?是否有任何 OpenID 提供商在属性交换方面做得不错?
我应该完全避开 OpenID 属性交换吗?
如何处理对功能的不一致支持?
ruby-on-rails - Ruby on Rails 中的 OpenID 身份验证
我是 Ruby on Rails 的新手,但我创建了几个小应用程序。无论如何,我对 OpenID 真的很感兴趣,我想在 Rails 应用程序中实现 OpenID 身份验证以及一些 Sreg 的东西。我所做的所有研究都提出了已过时或对我不起作用的文章。由于我对 Rails 很陌生,我很难调试问题,所以......
在 Rails 中实现 OpenId 的最佳方法是什么?
php - 仅接受来自经过身份验证的用户的某些 ajax 请求
确保仅从经过身份验证的用户接受对某些页面的某些 ajax 调用的最佳实践是什么?
例如:
假设我有一个名为blog.php的主页(我知道,创造力比比皆是)。我们还假设有一个名为delete.php的页面,它查找参数post_id,然后从数据库中删除一些条目。
在这个非常人为的示例中,blog.php 上有一些机制,它通过 ajax 向 delete.php 发送请求以删除条目。
现在这个机制只对 blog.php 上经过身份验证的用户可用。但是有什么办法可以阻止某人用一堆随机数调用 delete.php 并删除站点中的所有内容呢?
我做了一个快速测试,在 blog.php 中设置了一个会话变量,然后对 delete.php 进行了 ajax 调用,以返回是否设置了会话变量(它不是)。
处理这类事情的公认方法是什么?
好的。我第一次尝试这个时一定是疯了。
我刚刚做了另一个测试,就像我上面描述的那样,它工作得很好。
.net - 通过 WCF 进行身份验证的最佳方式是什么?
通过 WCF 实现身份验证的最佳方法是什么?
我宁愿不使用 WS-*,因为它需要独立于传输。
我应该“自己动手”吗?是否有任何指导(文章/博客文章)?
或者有什么方法可以(而且我应该)在服务器端使用内置的 ASP.NET 成员资格和配置文件提供程序?