[Web] ASP.Net 4.8 WebApi (Swagger, Jwt)


Posted by mike-hsieh on 2023-08-18

以下紀錄一個 ASP.Net 4.8 WebApi,搭配 Swagger, Jwt 的基本專案。
先附上github連結: https://github.com/mike-hsieh-tw/BaseWebApi4.8
IDE: VS2022

Step1: 使用vs2022選擇ASP.NET Web應用程式

圖-api01


圖-api02


圖-api03

Step2: 安裝套件
到 nuget 中查詢以下套件並照以下順序安裝,安裝時注意一下版本,基本上都可以適用 4.8。

// Jwt相關套件
System.IdentityModel.Tokens.Jwt
Microsoft.Owin.Security.Jwt
Microsoft.AspNet.WebApi.Owin
Microsoft.Owin.Host.SystemWeb
// Swagger相關套件
Swashbuckle

Step3: Web.Config檔案中加入Key

<add key="JwtKey" value="23GadUCymdzSR6PY6SjLTpDWNS6snwZNrEvdCwfq" />
<add key="JwtIssuer" value="http://localhost/" />


圖-api04

Step4: 加入Owin的啟動類。並加入以下程式碼。

圖-api05
上面還要引入 using Microsoft.Owin.Security;

public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            app.UseJwtBearerAuthentication(
                new JwtBearerAuthenticationOptions
                {
                    AuthenticationMode = AuthenticationMode.Active,
                    TokenValidationParameters = new TokenValidationParameters()
                    {
                        ValidateIssuer = true,
                        ValidateAudience = true,
                        ValidateIssuerSigningKey = true,
                        ValidIssuer = ConfigurationManager.AppSettings["JwtIssuer"], //some string, normally web url,  
                        ValidAudience = ConfigurationManager.AppSettings["JwtIssuer"],
                        IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(ConfigurationManager.AppSettings["JwtKey"]))
                    }
                });
        }
    }

Step5: 在WebApiConfig中加入Jwt相關服務。

config.SuppressDefaultHostAuthentication();
config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));


圖-api06

Step6: Controllers 中加入 UserController
//該部分請詳見github的檔案

Step7: 擴充Extensions資料夾和檔案
//該部分請詳見github的檔案

Step8: 有增加IP過濾器 和 Token延展器
//該部分請詳見github的檔案

參考資料:

  1. https://www.linkedin.com/pulse/tutorial-jwt-token-aspnet-48-webapi-mohamed-ebrahim

#asp.net4.8 #swagger #jwt #ip Validate







Related Posts

習慣致富

習慣致富

每日心得筆記 2021-05-19(三)

每日心得筆記 2021-05-19(三)

JS Advanced --Closure 閉包

JS Advanced --Closure 閉包


Comments