标签: restful-authentication

使用令牌实现RESTful API身份验证(Yii/Yii2)

我正在Yii 1.x中构建一个API,它将与移动应用程序一起使用.部分过程涉及使用以下JSON请求登录(使用用户名和密码): -

//使用用户名和密码发送的请求

{
"request" : {
    "model" : {
        "username" : "bobbysmith",
        "password" : "mystrongpassword"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

//如果成功登录,则返回以下响应

{
"response": {
    "code": 200,
    "message": "OK",
    "model": {
        "timestamp": 1408109484,
        "token": "633uq4t0qdtd1mdllnv2h1vs32"
    }
 }
}
Run Code Online (Sandbox Code Playgroud)

此令牌非常重要 - 一旦用户登录应用程序,我希望他们可以访问要求他们登录的其他页面.我希望移动应用程序存储此令牌,如果相同的633uq4t0qdtd1mdllnv2h1vs32令牌是在任何后续请求中发现它将接受此作为经过身份验证的请求(对于此用户'bobbysmith').

我有点不确定如何最好地做到这一点,我做了一些研究,oAuth已被提及几次,以及通过HTTPS的基本身份验证.

所以简而言之......

  1. 在移动应用主页上,用户使用其用户名和密码正确登录,并向API发送请求.
  2. 这将返回一个成功的响应(如上所示),其中包含当前时间戳和所有重要令牌.
  3. 同样的用户进入到另一个应用程序页面/图,其中该令牌是)要求和b)如果它匹配了这个认证用户(例如,这样他们就可以编辑该帐户等.)
  4. 一旦用户点击"注销",该令牌就会被删除(并且可以更长时间访问我的帐户等) - 基本上是基于令牌的身份验证系统.

任何人都可以解释实现这一目标的最佳方法吗?如果我所说的内容不是100%明确的,请告诉我,我会提供更多信息.

当我使用PHP时,Yii 1.x解决方案是理想的,因为这是使用当前API构建的.

概括地说,该应用可确保到服务器的每个请求包括在所述有效载荷或报头,以便此令牌可以被检索令牌随后的后,一旦退出该令牌被简单地移除或设置为空/空

php rest restful-authentication yii access-token

21
推荐指数
1
解决办法
4万
查看次数

对现代 Web 应用程序进行身份验证的最常用方法是什么?

我正在使用 Spring、Spring Security 编写 Web 应用程序(REST API)。现在我有基本身份验证和使用用户名、密码和角色的非常简单的授权。我想改进安全层,但我没有这方面的经验。

当我查看邮递员寻找可能的身份验证方法并在谷歌上搜索时,我看到有以下选项:

  • API 密钥
  • 不记名令牌
  • 基本认证
  • 摘要验证
  • OAuth 1.0
  • OAuth 2.0
  • 鹰认证
  • AWS 签名
  • NTLM 身份验证

Digest、Hawk、AWS 和 NTLM 似乎是非常具体的案例,所以我省略了它们。

我只听说过一些关于 API 密钥、不记名令牌和 OAuth 1.0\2.0 的一般信息,但 OAuth 1.0 似乎已经过时了或其他什么(我的意思是,2.0 版存在是有原因的)。

因此,我似乎有 3 种可能的变体:

  • API 密钥
  • 不记名令牌
  • OAuth 2.0

我的假设正确吗?现代 Web 应用程序中最广泛使用的安全层案例是什么?

我不要求每个案例的完整描述,只是一般性建议,也许需要一些链接\资源来查看。

我应该专注于什么?

你看到我的描述\解释中有哪些错误?

security rest web-services restful-authentication spring-security

20
推荐指数
1
解决办法
8565
查看次数

在C#中的RESTfull/HTTP请求中添加标头和发布数据

我在使用C#发送POST请求时遇到问题,似乎我误解了一些HTTP基础知识.所以基本上我正在实现RESTfull服务客户端,其工作方式如下:

  1. 使用用户名/密码发出POST请求并获取令牌
  2. 在进行其他GET/POST/PUT请求时,在标题(授权:TOKEN)中使用此标记

我用它WebRequest来制作GET请求(使用Authorization标头)并且它正在工作.但是,当我使用以下代码发出PUT请求时,服务正在提供"身份验证失败 - 未登录"消息:

String url = String.Format("{0}/{1}", AN_SERVER, app);
WebRequest theRequest = WebRequest.Create(url);
theRequest.Method = "POST";

theRequest.ContentType = "text/x-json";
theRequest.ContentLength = json.Length;
Stream requestStream = theRequest.GetRequestStream();

requestStream.Write(Encoding.ASCII.GetBytes(json), 0, json.Length);
requestStream.Close();


theRequest.Headers.Add("Authorization", authToken);

HttpWebResponse response =  (HttpWebResponse)theRequest.GetResponse();
Run Code Online (Sandbox Code Playgroud)

发送POST请求时,我一定是犯了一个小错误(至少我希望如此).那么我做错了什么?

谢谢.

.net c# restful-authentication http

19
推荐指数
1
解决办法
4万
查看次数

如何使用OpenID或OAuth进行内部第一方认证?

我正在为一组RESTful Web应用程序的用户开发内部身份验证系统.我们的目的是用户应该能够通过Web表单登录一次,并且可以访问我们域中的所有这些RESTful应用程序,这些应用程序可以跨多个服务器分布在私有云中.(我已经理解,单个经过身份验证的会话与纯RESTful方法不一致,但这是一个可用性要求.)

应用程序本身将使用各种编程语言编写,因此需要采用与语言无关的方法.有人向我建议我们可以使用OpenID或OAuth或类似的框架来处理身份验证,但我的理解是这些服务用于第三方服务,而不是用于在内部系统上共享数据的第一方服务.在这种情况下,我们可能有一个中央提供商服务,所有其他应用程序被视为第三方(或依赖方).

问题:

  1. OpenID/OAuth是否适合在第一方服务中进行身份验证?
  2. 如果是这样,如何建议为此用例设置身份验证?
  3. 用户是否必须向他们想要使用的每个第一方服务器授予个人权限,就像他们需要向任何第三方服务器授予个人权限一样?我认为这违反了访问所有第一方服务的单点登录的要求.
  4. 是否有支持此第一方用例的网站的良好示例?
  5. 这个第一方用例的替代框架是什么?

authentication restful-authentication openid-provider oauth-2.0

18
推荐指数
2
解决办法
7071
查看次数

RestSharp - 授权标头未涉及WCF REST服务

我试图通过基于身份验证的HTTPS调用本地托管的WCF REST服务.

这是有效的,授权标题通过很好,所有人都很高兴:

ServicePointManager.ServerCertificateValidationCallback = ValidateServerCertficate;
var request = (HttpWebRequest)WebRequest.Create("https://localhost/MyService/MyService.svc/");
request.Method = "GET";
request.ContentType = "application/json";
request.Headers.Add(
  System.Net.HttpRequestHeader.Authorization,
  "Basic " + this.EncodeBasicAuthenticationCredentials("UserA", "123"));

WebResponse webResponse = request.GetResponse();
using (Stream webStream = webResponse.GetResponseStream())
{
    if (webStream != null)
    {
        using (StreamReader responseReader = new StreamReader(webStream))
        {
            string response = responseReader.ReadToEnd();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用RestSharp时,Authorization标头永远不会通过请求:

ServicePointManager.ServerCertificateValidationCallback = ValidateServerCertficate;

var credentials = this.EncodeBasicAuthenticationCredentials("UserA", "123");

var client = new RestSharp.RestClient("https://localhost/MyService/MyService.svc/");   
var restRq = new RestSharp.RestRequest("/");
restRq.Method = Method.GET;
restRq.RootElement = "/";
restRq.AddHeader("Authorization", "Basic " …
Run Code Online (Sandbox Code Playgroud)

c# rest restful-authentication restsharp

18
推荐指数
3
解决办法
3万
查看次数

无需移动应用程序的用户身份验证即可保护私有REST API的最佳方法

我正在为我的移动应用程序制作一些Restful API.

APP和Web服务器之间的通信必须在REST中进行.这些apis应该是私有的,只有我的应用程序才能调用它们以获得成功的结果.

困难的部分是,我的应用程序中不需要用户ID和密码,因此我不知道如何在没有基本用户身份验证的情况下使用移动应用程序限制rest API.

我认为一种解决方案是嵌入某种硬编码字符串,因此当移动应用程序使用restful url时,他们将通过ssl以加密格式传递.但我知道这似乎是非常糟糕的解决方案..

请在这种情况下建议什么应该是最好的解决方案.

php api rest android restful-authentication

18
推荐指数
2
解决办法
2万
查看次数

Identity Server(OAuth2)实现与遗留系统的集成(Forms Auth,ADFS,AD)

我们目前正在构建RESTful API(.Net Core,IdentityServer 4,EF6).我们已经发布了它的MVP版本.

它还引用了WCF服务.此WCF服务协调对其他内部(旧系统)和其他集成组件的所有其他调用.

(可能是错误的)实现概述图如下:

在此输入图像描述

我们坚持的主要事情之一是弄清楚如何使用Identity Server集成不同的身份验证和授权系统......

特别是服务电话的内部服务.我们是否使用相同的IdentityServer来执行多个功能?(公共消费者授权和认证以及内部服务到服务授权).

传统上,我们使用了不同的WCF安全配置(Transport,TransportWithMessageCredentials ......等),添加了Forms,AD,ADFS和Service Accounts.我们需要确保正在进行正确的调用以实现可重用的IdentiyServer实现.

简而言之,我们的挑战是如何执行内部服务授权?

  1. 拥有一个处理面向公众的请求和内部(多跳)服务到服务授权的中央Identity Server实现是一种好习惯吗?
  2. 您是否建议从处理面向公众的API请求的那些服务器中拆分并拥有单独的身份服务器以进行内部服务到服务授权?
  3. 或者我们是否还要进一步拆分并为每个应用程序用例创建不同的身份服务器?

c# restful-authentication oauth-2.0 restful-architecture identityserver4

18
推荐指数
1
解决办法
1085
查看次数

Rails,Restful Authentication&RSpec - 如何测试需要身份验证的新模型

我使用Bort创建了一个学习应用程序,这是一个包含Restful Authentication和RSpec的基础应用程序.我已经启动并运行并添加了一个新对象,要求用户在他们可以做任何事情之前登录(before_filter :login_required在控制器中).[编辑:我还应该提到has_many新类的用户,只有用户才能看到它.]

我使用Rspec的生成器创建了新的模型/控制器,这些生成器创建了许多默认测试.如果没有,那么它们都会通过,before_filter但是一旦before_filter到位,它们就会出现故障.

如何让生成的测试运行,就好像有/不是登录用户?我是否需要未登录的整批匹配 - 重定向测试?我认为它是某种嘲弄或夹具技术,但我是RSpec的新手并且有点漂泊.良好的RSpec教程链接也将不胜感激.

testing rspec ruby-on-rails restful-authentication

17
推荐指数
2
解决办法
1万
查看次数

WCF,RESTful Web服务和自定义身份验证

我开始相信我是一个非常无能的程序员.经过大量阅读后,我仍然无法弄清楚如何干净地实现RESTful WCF服务的身份验证机制.

我尝试了一切:

  1. 遵循本指南,只是发现建议的身份验证机制是一个丑陋的黑客.

  2. 安装WCF REST入门工具包,仅发现它已过时并已被其他项目模板替换.

  3. 安装所说的项目模板,却发现它没有提供自己的任何认证机制.

  4. 安装一个IIS模块,在传输级别提供自定义身份验证功能,但只能找出作者提供的零文档.只是发现我需要实现一个MembershipProvider.(我只想提供一个UserNamePasswordValidator.)

是否有任何理智的方法来实现RESTful WCF服务的身份验证机制?

wcf restful-authentication

17
推荐指数
1
解决办法
6191
查看次数

将Rails/Devise身份验证公开给iOS应用程序

我有一个rails 3.1应用程序,它使用Devise进行身份验证,带有一个简单的用户模型,带有电子邮件,密码等.我需要能够从iphone应用程序进行身份验证.如何公开此功能?答案很广泛,因为我不确定我的选择是什么.

authentication ruby-on-rails restful-authentication devise ios

17
推荐指数
1
解决办法
5078
查看次数