1. Startup.Auth.cs文件

添加属性

1
public static OAuthBearerAuthenticationOptions OAuthBearerOptions { getprivate set; }

添加静态构造函数

1
2
3
4
5
6
7
/// <summary>
/// 构造函数
/// </summary>
static Startup()
{
    OAuthBearerOptions = new OAuthBearerAuthenticationOptions();
}   

方法ConfigureAuth中添加

1
2
// 使用不记名身份验证
app.UseOAuthBearerAuthentication(OAuthBearerOptions);

2. WebApiConfig.cs文件

方法Register中添加

1
2
config.SuppressDefaultHostAuthentication();
config.Filters.Add(new HostAuthenticationFilter("Bearer"));

3. 创建身份验证方法(Web API)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
[HttpPost]
public async Task<String> Authenticate(string userName, string password)
{
    if (string.IsNullOrEmpty(userAccount) || string.IsNullOrEmpty(password))
    {
        return string.Empty;
    }<br>
    // 用户查找失败
    User user = await UserManager.FindAsync(userName, password);           
    if (user == null)
    {
        return string.Empty;
    }
 
    // 身份验证票证包括角色或者可以换成用户名
    var identity = new ClaimsIdentity(Startup.OAuthBearerOptions.AuthenticationType);
    identity.AddClaim(new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()));
    if (UserManager.SupportsUserRole)
    {
        IList<string> roles = await UserManager.GetRolesAsync(user.Id).ConfigureAwait(false);
        foreach (string roleName in roles)
        {
            identity.AddClaim(new Claim(ClaimTypes.Role, roleName, ClaimValueTypes.String));
        }
    }
    AuthenticationTicket ticket = new AuthenticationTicket(identity, new AuthenticationProperties());
    var currentUtc = DateTime.UtcNow;
    ticket.Properties.IssuedUtc = currentUtc;
    ticket.Properties.ExpiresUtc = currentUtc.Add(TimeSpan.FromDays(1));
 
    // 返回值
    return Startup.OAuthBearerOptions.AccessTokenFormat.Protect(ticket);
}

4. 为需要身份验证的控制器或方法添加标记

1
2
3
4
[Authorize(Roles = "Admin")]
public class UsersController : ApiController
{
}

测试:

在请求头部中添加令牌,格式如下:

Authorization: Bearer boQtj0SCGz2GFGz...

 
分类: Web API

asp.net Web API 身份验证 不记名令牌验证 Bearer Token Authentication 简单实现的更多相关文章

  1. [转]ASP.NET Web API(三):安全验证之使用摘要认证(digest authentication)

    本文转自:http://www.cnblogs.com/parry/p/ASPNET_MVC_Web_API_digest_authentication.html 在前一篇文章中,主要讨论了使用HTT ...

  2. ASP.NET Web API(三):安全验证之使用摘要认证(digest authentication)

    在前一篇文章中,主要讨论了使用HTTP基本认证的方法,因为HTTP基本认证的方式决定了它在安全性方面存在很大的问题,所以接下来看看另一种验证的方式:digest authentication,即摘要认 ...

  3. 购物车Demo,前端使用AngularJS,后端使用ASP.NET Web API(3)--Idetity,OWIN前后端验证

    原文:购物车Demo,前端使用AngularJS,后端使用ASP.NET Web API(3)--Idetity,OWIN前后端验证 chsakell分享了前端使用AngularJS,后端使用ASP. ...

  4. ASP.NET Web API(二):安全验证之使用HTTP基本认证

    在前一篇文章ASP.NET Web API(一):使用初探,GET和POST数据中,我们初步接触了微软的REST API: Web API. 我们在接触了Web API的后就立马发现了有安全验证的需求 ...

  5. 【ASP.NET Web API教程】6.4 模型验证

    本文是Web API系列教程的第6.4小节 6.4 Model Validation 6.4 模型验证 摘自:http://www.asp.net/web-api/overview/formats-a ...

  6. Web API 身份验证 不记名令牌验证 Bearer Token Authentication

    1. Startup.Auth.cs文件 添加属性 public static OAuthBearerAuthenticationOptions OAuthBearerOptions { get; p ...

  7. ASP.NET Web API身份验证和授权

    英语原文地址:http://www.asp.net/web-api/overview/security/authentication-and-authorization-in-aspnet-web-a ...

  8. ASP.NET Web API 2系列(四):基于JWT的token身份认证方案

    1.引言 通过前边的系列教程,我们可以掌握WebAPI的初步运用,但是此时的API接口任何人都可以访问,这显然不是我们想要的,这时就需要控制对它的访问,也就是WebAPI的权限验证.验证方式非常多,本 ...

  9. ASP.NET Web API 2 external logins with Facebook and Google in AngularJS app

    转载:http://bitoftech.net/2014/08/11/asp-net-web-api-2-external-logins-social-logins-facebook-google-a ...

随机推荐

  1. php markdown 接口文档生成工具 SummerDoc

    2017年9月18日 19:20:22 星期一 因工作需要, 用PHP写了一个管理接口文档的小工具, 下边介绍一下: 浏览器展示的效果: 项目地址:(码云) 例子(http://doc.hearu.t ...

  2. T-SQL LIKE子句 模糊查询

    MS SQL Server LIKE子句用于使用通配符运算符将值与类似值进行比较. 有两个通配符与LIKE运算符结合使用: 百分号(%) 下划线(_) 百分号表示零个,一个或多个字符. 下划线表示单个 ...

  3. LabVIEW版本控制(转)

    原文转自https://www.cnblogs.com/EltonLiang/p/7105034.html 在我们工作中,必然会遇到代码的多个版本问题,也必然会遇到版本控制问题.如果所在的公司具有良好 ...

  4. 天宝MB-Two:无法打开web登陆界面

    在浏览器中访问http://192.168.1.100,正常是打开MB-Two芯片的web 登陆界面,但是事与愿违,打开的是帮助界面. 解决办法: 用串口调试助手,波特率默认是115200,连接过去. ...

  5. c++内存对齐原理

    转载自http://blog.csdn.net/it_yuan/article/details/24651347 #类中的元素 0. 成员变量   1. 成员函数   2. 静态成员变量   3. 静 ...

  6. 【原创】大叔问题定位分享(31)hive metastore报错

    hive metastore在建表时报错 [pool-5-thread-2]: MetaException(message:Got exception: java.net.ConnectExcepti ...

  7. python-进程池与线程池,协程

    一.进程池与线程池 实现并发的手段有两种,多线程和多进程.注:并发是指多个任务看起来是同时运行的.主要是切换+保存状态. 当我们需要执行的并发任务大于cpu的核数时,我们需要知道一个操作系统不能无限的 ...

  8. textarea的高度随内容变化而变化

    <li class="text"> <span>参赛宣言*</span> <textarea name="txt" i ...

  9. spring各版本jar包和源码

    spring各版本jar包和源码 spring历史版本源码:https://github.com/spring-projects/spring-framework/tags spring历史jar包和 ...

  10. Oracle Vm VirtualBox 搭建 yum 环境

    配置本地yum库(用root用户操作) 创建挂载目录 #创建挂载目录 [root@oracle ~]# mkdir /mnt/cdrom # 查看挂载目录 [root@oracle ~]# ls /m ...