国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

在ASP.NET Core中實現(xiàn)一個Token base的身份認(rèn)證實例

2024-07-10 12:49:34
字體:
供稿:網(wǎng)友

以前在web端的身份認(rèn)證都是基于Cookie | Session的身份認(rèn)證, 在沒有更多的終端出現(xiàn)之前,這樣做也沒有什么問題,但在Web API時代,你所需要面對的就不止是瀏覽器了,還有各種客戶端,這樣就有了一個問題,這些客戶端是不知道cookie是什么鬼的。 (cookie其實是瀏覽器搞出來的小貓膩,用來保持會話的,但HTTP本身是無狀態(tài)的, 各種客戶端能提供的無非也就是HTTP操作的API)

而基于Token的身份認(rèn)證就是應(yīng)對這種變化而生的,它更開放,安全性也更高。

基于Token的身份認(rèn)證有很多種實現(xiàn)方式,但我們這里只使用微軟提供的API。

接下來的例子將帶領(lǐng)大家完成一個使用微軟JwtSecurityTokenHandler完成一個基于beare token的身份認(rèn)證。

注意:這種文章屬于Step by step教程,跟著做才不至于看暈,下載完整代碼分析代碼結(jié)構(gòu)才有意義。

前期準(zhǔn)備

推薦使用VS2015 Update3作為你的IDE,下載地址://www.survivalescaperooms.com/softjc/446184.html

你需要安裝.NET Core的運行環(huán)境以及開發(fā)工具,這里提供VS版://www.survivalescaperooms.com/softs/472362.html

創(chuàng)建項目

在VS中新建項目,項目類型選擇ASP.NET Core Web Application(.NET Core), 輸入項目名稱為CSTokenBaseAuth

Coding

創(chuàng)建一些輔助類

在項目根目錄下創(chuàng)建一個文件夾Auth,并添加RSAKeyHelper.cs以及TokenAuthOption.cs兩個文件

在RSAKeyHelper.cs中

using System.Security.Cryptography;namespace CSTokenBaseAuth.Auth{  public class RSAKeyHelper  {    public static RSAParameters GenerateKey()    {      using (var key = new RSACryptoServiceProvider(2048))      {        return key.ExportParameters(true);      }    }  }}

在TokenAuthOption.cs中

using System;using Microsoft.IdentityModel.Tokens;namespace CSTokenBaseAuth.Auth{  public class TokenAuthOption  {    public static string Audience { get; } = "ExampleAudience";    public static string Issuer { get; } = "ExampleIssuer";    public static RsaSecurityKey Key { get; } = new RsaSecurityKey(RSAKeyHelper.GenerateKey());    public static SigningCredentials SigningCredentials { get; } = new SigningCredentials(Key, SecurityAlgorithms.RsaSha256Signature);    public static TimeSpan ExpiresSpan { get; } = TimeSpan.FromMinutes(20);  }}

Startup.cs

在ConfigureServices中添加如下代碼:

services.AddAuthorization(auth =>{  auth.AddPolicy("Bearer", new AuthorizationPolicyBuilder()    .AddAuthenticationSchemes(JwtBearerDefaults.AuthenticationScheme‌​)    .RequireAuthenticatedUser().Build());});

完整的代碼應(yīng)該是這樣

public void ConfigureServices(IServiceCollection services){  // Add framework services.  services.AddApplicationInsightsTelemetry(Configuration);  // Enable the use of an [Authorize("Bearer")] attribute on methods and classes to protect.  services.AddAuthorization(auth =>  {    auth.AddPolicy("Bearer", new AuthorizationPolicyBuilder()      .AddAuthenticationSchemes(JwtBearerDefaults.AuthenticationScheme‌​)      .RequireAuthenticatedUser().Build());  });  services.AddMvc();}            
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 甘孜县| 年辖:市辖区| 镇雄县| 大足县| 平安县| 陵水| 舒城县| 汽车| 靖西县| 托克逊县| 桐柏县| 扶绥县| 泰兴市| 荆门市| 团风县| 通许县| 漳平市| 阳谷县| 普陀区| 泰来县| 呼图壁县| 平邑县| 堆龙德庆县| 苗栗市| 蕉岭县| 开鲁县| 榕江县| 额尔古纳市| 汉中市| 昔阳县| 木兰县| 上饶县| 仁化县| 河源市| 修水县| 上栗县| 清新县| 廊坊市| 荣昌县| 日土县| 常熟市|