在ASP.NET Core 中實現基於令牌的身份驗證可能是一項挑戰,尤其是從以前版本的過渡時框架。本文提供了有關如何設定 WebApi 應用程式以進行基於令牌的身份驗證、解決 .NET Core 版本的常見問題和更新的詳細說明。
啟動設定
中Startup.cs,設定您的服務並在ConfigureServices方法中加入以下程式碼:
const string TokenAudience = "Myself"; const string TokenIssuer = "MyProject"; var claimsPrincipal = new System.Security.Claims.ClaimsPrincipal(new[] { new System.Security.Claims.ClaimsIdentity(new[] { new System.Security.Claims.Claim(System.Security.Claims.ClaimTypes.Name, "Demo User") }) }); public string BuildJwt() { var keySecret = authenticationConfiguration["JwtSigningKey"]; var symmetricKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(keySecret)); var creds = new SigningCredentials(symmetricKey, SecurityAlgorithms.HmacSha256); var token = new JwtSecurityToken( issuer: TokenIssuer, audience: TokenAudience, claims: claimsPrincipal.Claims, expires: DateTime.Now.AddMinutes(20), signingCredentials: creds ); return new JwtSecurityTokenHandler().WriteToken(token); }
接下來,配置身份驗證管道在C onfigure方法中:
app.UseAuthentication(); app.UseAuthorization();
使用身份驗證中間件
確保app.UseAuthentication()中間件放置在任何需要用戶資訊的中間件之前,例如app .UseMvc()。這將檢查授權標頭中的承載令牌。
授權策略(可選)
如果需要,指定授權策略以限制對某些控制器或操作的存取僅適用不記名令牌:
services.AddAuthorization(auth => { auth.AddPolicy("Bearer", new AuthorizationPolicyBuilder() .AddAuthenticationTypes(JwtBearerDefaults.AuthenticationType) .RequireAuthenticatedUser().Build()); });
產生Token
要產生用於身份驗證的令牌,請使用前面定義的BuildJwt 方法。例如,在控制器操作中:
[HttpPost] public string AnonymousSignIn() { return BuildJwt(); }
測試和驗證
使用jwt.io 等工具取得令牌並使用金鑰驗證其簽章在authenticationConfiguration中指定的密鑰。
透過仔細遵循這些說明,您可以在ASP.NET中成功實現基於令牌的身份驗證核心 WebApi 應用程式並有效保護您的 API 端點。
以上是如何在 ASP.NET Core 中實現基於令牌的身份驗證?的詳細內容。更多資訊請關注PHP中文網其他相關文章!