Questions tagged «authentication»

身份验证是验证身份的过程。

6
传统Web应用程序和API中的身份验证,授权和会话管理
如果我错了,请纠正我:在传统的Web应用程序中,浏览器会自动将会话信息附加到服务器的请求中,以便服务器可以知道请求的来源。实际上究竟附加了什么? 但是,在基于API的应用程序中,此信息不会自动发送,因此在开发API时,我必须检查自己(例如,请求是否来自经过身份验证的用户)?通常如何做?

4
ASP.Net-Core中的自定义身份验证
我正在开发需要与现有用户数据库集成的Web应用程序。我仍然想使用[Authorize]属性,但是我不想使用Identity框架。如果我确实想使用Identity框架,则可以在startup.cs文件中添加以下内容: services.AddIdentity<ApplicationUser, IdentityRole>(options => { options.Password.RequireNonLetterOrDigit = false; }).AddEntityFrameworkStores<ApplicationDbContext>() .AddDefaultTokenProviders(); 我假设我必须在此添加其他内容,然后创建某种实现特定接口的类?有人可以指出我正确的方向吗?我现在正在使用asp.net 5的RC1。

6
MongoDB“ root”用户
MongoDB是否有像“ root”用户这样的超级UNIX用户?我一直在看http://docs.mongodb.org/manual/reference/user-privileges/,并尝试了许多组合,但它们似乎都缺少某个区域或另一个区域。当然,在这里列出的所有角色中,首先要有一个角色。

17
从外部来源(例如Excel,Word等)单击链接后,为什么无法识别Cookie?
我注意到,当从网络浏览器(例如从Excel或Word)在外部单击链接时,即使该链接在同一浏览器窗口的新选项卡中打开,最初也无法识别我的会话cookie。 浏览器最终最终识别出它的cookie,但是我对为什么Excel或Word的初始链接不起作用感到困惑。为了使它更具挑战性,单击链接可以在Outlook中正常工作。 有人知道为什么会这样吗?我正在使用Zend Framework和PHP 5.3。

3
nodejs护照认证令牌
我正在编写一个想同时用作Web应用程序和API提供程序的Node.js应用程序。验证用户身份后,我想为该用户分配一个令牌,以用于后续请求。这对于Web应用程序的通行证非常有用,因为我只是在会话中使用令牌对用户进行序列化和反序列化。但是,在响应API请求时,没有用于设置存储会话信息的cookie。理想情况下,护照将在会话和请求正文中都寻找令牌。有什么方法可以配置护照来完成此任务吗?

3
REST和身份验证变体
我目前正在研究.net的REST库,我想听听有关我拥有的一个开放点的一些意见:REST和身份验证。 这是与库一起使用的RESTful接口的示例: [RestRoot("/user")] public interface IUserInterface { [RestPut("/")] void Add(User user); [RestGet("/")] int[] List(); [RestGet("/get/{id}")] User Get(int id); [RestDelete("/delete/{id}")] void Delete(int id); } 然后,服务器代码仅实现该接口,客户端可以通过工厂获得相同的接口。或者,如果客户端未使用库,则标准HTTP请求也可以使用。 我知道,有使用HTTP基本身份验证或将令牌发送到需要经过身份验证的用户的请求的主要方法。 第一种方法(HTTP基本身份验证)具有以下问题(部分特定于Web浏览器): 密码随每个请求一起发送-即使使用SSL,也会有某种“不好的感觉”。 由于密码是与请求标头一起发送的,因此本地攻击者很容易查看发送的标头以获取密码。 密码在浏览器的内存中可用。 没有使用户“会话”过期的标准方法。 使用浏览器登录会中断页面​​的外观。 第二种方法的问题更多地集中在实现和库使用上: 每个需要认证的请求URI必须具有用于令牌的参数,该参数非常重复。 如果每个方法实现都需要检查令牌是否有效,则还有很多代码要编写。 该界面将变得不那么具体如[RestGet("/get/{id}")]对[RestGet("/get/{id}/{token}")]。 将令牌放在何处:URI的末尾?后根?别的地方? 我的想法是将令牌作为参数传递给URL,例如http:/server/user/get/1234?token=token_id。 另一种可能性是将参数作为HTTP标头发送,但是我猜这会使普通HTTP客户端的使用变得复杂。 令牌将作为每个请求的自定义HTTP标头(“ X-Session-Id”)传递回客户端。 然后可以从接口中完全提取该令牌,并且任何需要身份验证的实现都可以询问令牌(如果给定)属于哪个用户。 您是否认为这会严重违反REST或您有更好的主意?

1
REST API授权和身份验证(Web +移动)
我已经阅读了有关oAuth,Amazon REST API,HTTP Basic / Digest等的信息,但无法将其全部整合为“单个”。这可能是最接近的情况-为移动应用程序创建API-身份验证和授权 我想建立以API为中心的网站-服务。因此(一开始)我将在中心拥有一个API,而网站(PHP + MySQL)将通过cURL,Android和iPhone通过它们的网络接口进行连接。因此,有3个主要客户-3个API密钥。其他开发人员也可以通过API接口进行开发,他们将获得自己的API密钥。根据用户级别的状态,API操作将被接受/拒绝,如果我是管理员,则可以删除任何内容,等等,其他所有操作都只能操作其本地(帐户)数据。 首先,授权-我应该使用oAuth + xAuth还是我自己的某种实现(请参阅http://docs.amazonwebservices.com/AmazonCloudFront/latest/DeveloperGuide/RESTAuthentication.html?r=9197)?据我了解,Amazon服务用户是== API用户(具有API密钥)。在我的服务中,我需要将标准用户/帐户(在网站上注册的用户)和开发者帐户(应具有其API密钥)分开。 因此,我首先需要授权API密钥,然后验证用户本身。如果我使用亚马逊的方案检查开发人员的API密钥(授权他们的应用程序),那么我应该使用哪个sheme进行用户身份验证? 我读到有关通过api.example.org/auth(通过HTTPS,HTTP Basic)发布我的用户名和密码,然后在随后的每个请求中转发令牌的方式获得令牌的信息。如果同时在Android和网站上登录,如何管理令牌?如果我仅在第一个请求(传输用户名和密码时)仅使用SSL而在其他请求上仅使用HTTP时,中间人攻击怎么办?在此示例中,密码保护REST服务不是问题吗?

7
无法使用旧的身份验证连接到MySQL 4.1+
我正在尝试连接到http://bluesql.net上的mySQL数据库,但是当我尝试连接时,出现此错误: Connect Error (2000) mysqlnd cannot connect to MySQL 4.1+ using old authentication 我已经研究过了,它与MySQL 4.1之前使用的一些旧密码方案有关。较新的版本可以选择使用旧密码,我读过此密码可能会导致此问题。 我正在运行php 5.3,并与mySQLi(新的mysqli(...))连接。我希望我可以在代码中做一些事情以连接到bluesql.net上的数据库-显然我不控制如何设置他们的数据库。降级php版本不是一种选择。 谁有想法?


15
使用电子邮件地址作为用户ID的利弊是什么?
我正在创建一个需要注册/身份验证的Web应用程序,并且正在考虑将电子邮件地址用作唯一的用户ID。这是我认为的利弊(已更新响应): 优点 在注册过程中要填写的一栏要少一些(只是电子邮件地址,密码和验证密码)。我是简约注册的忠实拥护者。 电子邮件地址更容易记住。(感谢米切尔,杰里米) 您不必担心自己喜欢的用户名已经被占用-您是唯一使用电子邮件地址的人。(感谢TStamper) 缺点 用户每次登录时都可以输入更多内容。 如果用户想要多个帐户怎么办?他们需要另一个电子邮件地址。(我是否甚至希望用户能够创建多个帐户?) 潜在的攻击者容易猜出(如果他们知道目标的电子邮件地址,他们就会知道登录ID)。(感谢Vasil) 用户可能会想使用与他们的电子邮件帐户相同的密码,这是很安全的做法。(感谢托马斯) 如果您经常更改电子邮件地址,则可能很难记住长时间中断后用于注册网站的地址。(感谢Software Monkey) 黑客可能会向注册表格发送垃圾邮件,并使用“已收到电子邮件”响应来生成有效电子邮件列表。(感谢大卫) 并非每个人都有电子邮件地址。(感谢尼古拉斯) 如果我将电子邮件作为id,那么我将提供一种机制,允许用户更改地址时更改它。在这种情况下,用户不会将内容发布到公共站点,因此不需要单独的用户名来保护电子邮件地址(但这是其他站点要考虑的事情)。 另一个选择是实现OpenID(这是另一场辩论)。 这似乎适用于Google,但它们的服务紧密集成。我在分析中错过了什么?你有什么建议?有没有人可以分享经验? 最终编辑 谢谢大家的答复。我已经决定使用电子邮件作为id,但是允许在注册后创建用于登录目的的用户名。这样可以在保持注册尽可能短的同时提供一点灵活性。它还可以防止用户更改电子邮件地址时出现问题(他们只能使用其用户名登录并进行更新)。我还将实现一些方法,以防止将电子邮件地址强行从注册和登录系统中删除(主要是反复尝试后的冷静期)。

5
Git http-安全记住凭据
通过HTTP(S)连接到远程存储库时,是否有办法安全地让git记住我的凭据? 我尝试了core.askpass详细介绍的方法git-config,让外部脚本提供我的凭据。尽管效果很好,但用户名和密码仍以纯文本格式存储在小型Shell脚本中。

2
Web API中基于令牌的身份验证,没有任何用户界面
我正在ASP.Net Web API中开发REST API。我的API仅可通过非基于浏览器的客户端访问。我需要为我的API实现安全性,因此我决定采用基于令牌的身份验证。我对基于令牌的身份验证有一定的了解,并且阅读了一些教程,但是它们都有一些用于登录的用户界面。我不需要任何UI进行登录,因为登录详细信息将由客户端通过HTTP POST传递,而HTTP POST将从我们的数据库中获得授权。如何在我的API中实现基于令牌的身份验证?请注意-我的API将以高频率访问,因此我也必须注意性能。请让我知道是否可以更好地解释它。

4
使用AngularJS进行身份验证,使用REST Api WS进行会话管理和安全性问题
我开始使用angularJS开发Web应用程序,但不确定是否所有内容(客户端和服务器端)都受到正确保护。安全性基于单个登录页面,如果可以对凭据进行检查,则我的服务器将发回具有自定义时间有效性的唯一令牌。所有其他REST api均可通过此令牌访问。该应用程序(客户端)浏览至我的入口点,例如:https : //www.example.com/home.html用户插入凭据并收到唯一令牌。该唯一令牌是使用AES或其他安全技术存储在服务器数据库中的,不是以明文格式存储的。 从现在开始,我的AngluarJS应用将使用此令牌对所有公开的REST Api进行身份验证。 我正在考虑将令牌临时存储在自定义的http cookie中;基本上,当服务器验证凭据时,它将发回新的Cookie Ex。 app-token : AIXOLQRYIlWTXOLQRYI3XOLQXOLQRYIRYIFD0T cookie的安全和HTTP Only标志设置为打开。Http协议直接管理新的cookie并将其存储。连续的请求将向cookie提供带有新参数的cookie,而无需对其进行管理并使用javascript进行存储;在每次请求时,服务器都会使令牌无效并生成一个新令牌,然后将其发送回客户端->防止使用单个令牌进行重放攻击。 当客户端从任何REST Api收到HTTP状态401未经授权的响应时,角度控制器将清除所有cookie,并将用户重定向到登录页面。 我是否应该考虑其他方面?将令牌存储在新的cookie或localStorage中更好吗?关于如何生成独特的强令牌的任何技巧? 编辑(改进): 我决定使用HMAC-SHA256作为会话令牌生成器,有效期为20分钟。我生成一个随机的32字节GUID,附加一个时间戳,并通过提供40字节的密钥来计算HASH-SHA256。由于令牌的有效性非常低,因此几乎不可能获得冲突。 Cookie将具有域和路径属性,以提高安全性。 不允许多次登录。

3
如何在服务器端使用Facebook用户访问令牌?
前言 我正在开发几个Web服务和少数客户端(Web应用程序,移动设备等),它们将通过HTTP与上述服务进行交互。我当前的工作项目是为产品设计身份验证和授权解决方案。我已决定利用外部身份提供者(例如Facebook,Google,Microsoft,Twitter等)进行身份验证。 我正在尝试解决以下问题:“当有请求发送到服务器时,我怎么知道用户是谁,如何确定?”。下面还有更多问题... 要求 依靠外部身份来表明我正在与谁打交道('userId'本质上就是我关心的全部)。 系统应使用基于令牌的身份验证(例如,相对于cookie或基本身份验证)。 我相信这是跨多个客户端和服务器扩展同时提供松散耦合的正确选择。 工作流程 根据我对基于令牌的身份验证的阅读和理解,以下是我对工作流程的想象。现在让我们通过网络浏览器关注Facebook。我的假设是,其他外部身份提供商应具有类似的功能,尽管我尚未确认。 请注意,在撰写本文时,我基于以下Facebook登录版本2.2 客户端:使用JavaScript SDK启动登录Facebook Facebook:用户验证并批准应用权限(例如,访问用户的公开资料) Facebook:将响应发送到客户端,其中包含用户的访问令牌,ID和已签名的请求 客户端:将用户访问令牌存储在浏览器会话中(由SDK方便地处理) 客户端:通过在授权标头+用户ID(可能在自定义标头中)中发送用户的访问令牌,向我的Web服务请求安全资源 服务器:从请求标头读取用户访问令牌,并通过向Facebook提供的debug_token图API发送请求来启动验证 Facebook:使用用户访问令牌信息来响应服务器(包含appId和userId) 服务器:通过将appId与期望值(自身已知)进行比较,并将userId与客户端请求中发送的内容进行比较,从而完成令牌的验证 服务器:使用请求的资源响应客户端(假设授权路径愉快) 我在想象对服务器的后续请求将重复执行步骤5-9(而用户的访问令牌有效–未过期,从FB端撤消,更改应用权限等) 这是一个有助于执行步骤的图表。请了解该系统不是单页应用程序(SPA)。提到的Web服务是从本质上将JSON数据返回给客户端的API端点。它们不提供HTML / JS / CSS(Web客户端服务器除外)。 问题 首先,基于我的序言和要求,上述方法是否存在明显的缺口/凹坑? 是否需要/建议向Facebook执行出站请求以验证每个客户请求的访问令牌(上述步骤6-8)? 我至少知道,我必须验证来自客户端请求的访问令牌。但是,对于第一次验证之后的后续验证,推荐的方法对我来说还是未知的。如果有典型的模式,我很想听听它们。我了解,根据我的要求,它们可能取决于应用程序;但是,我只是不知道要寻找什么。一旦有了基本思路,我将进行尽职调查。 例如,可能的想法: 第一次验证完成后,将访问令牌+用户ID对散列,并将其存储在分布式缓存(可由所有Web服务器访问)中,并且到期时间等于访问令牌。根据来自客户端的后续请求,对访问令牌+ userId对进行哈希处理,并检查其在缓存中的存在。如果存在,则请求被授权。否则,请联系Facebook图形API确认访问令牌。我假设如果使用HTTPS(将会),则该策略可能可行。但是,性能如何比较? 在这个StackOverflow问题中可接受的答案建议在对Facebook用户令牌的第一次验证完成后创建一个自定义访问令牌。然后,将自定义令牌发送到客户端以进行后续请求。我想知道这是否比上述解决方案更复杂。这将需要实现我自己的身份提供者(我想避免的事情,因为我想首先使用外部身份提供者……)。这个建议有什么好处吗? 上面的步骤3中的响应上是否存在signedRequest字段(在此处提到),是否等同于“游戏画布登录”流程中此处的signed请求参数? 似乎暗示它们是等效的,因为在文档中前者链接到后者。但是,令我感到惊讶的是,网络文档的“手动构建登录流程”页面中没有提到游戏页面上提到的验证策略。 如果对#3的回答为“是”,是否可以使用相同的身份确认策略对签名进行解码并与预期在服务器端使用的身份进行比较? 我想知道是否可以利用此方法来代替对debug_token图API的出站调用(上述步骤#6),以按照此处的建议确认访问令牌: 当然,为了在服务器端进行比较,需要将签名的请求部分与请求一起发送到服务器(上述步骤#5)。除了在不牺牲安全性的情况下的可行性之外,我想知道与拨打外拨电话相比,性能如何。 当我在使用它时,在什么情况下/出于什么目的,例如,您会将用户的访问令牌持久化到数据库吗?我看不到需要这样做的情况,但是,我可能会忽略某些事情。我很好奇某些常见情况可能会引发一些想法。 谢谢!

4
如何使用Devise“软删除”用户
我目前在Rails项目中使用Devise进行用户注册/身份验证。当用户想要取消其帐户时,该用户对象被销毁,这使我的应用程序处于不希望的状态。 实现“软删除”的最简单方法是什么,即仅删除个人数据并将用户标记为已删除?我仍然想保留所有记录关联。 我认为我必须首先为用户介绍一个新的“已删除”列。但是随后,我在用户的个人资料视图中停留了以下默认代码: <p>Unhappy? <%= link_to "Cancel my account", registration_path(resource_name), :confirm => "Are you sure?", :method => :delete %>.</p> 在哪里可以找到:delete方法?我应该如何覆盖默认的Devise方法?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.