假设您有一个 ASP.NET Core 应用程序,您希望在其中实现基于令牌的身份验证AngularJS 应用程序。 AngularJS 应用程序将向特定 URL 发出请求,并传递用户名和密码。 Web API 将授权用户并返回一个访问令牌,AngularJS 应用程序将在后续请求中使用该令牌。
配置基于令牌的 ASP.NET Core Web API 应用程序身份验证:
为代币受众和发行者创建常量:
const string TokenAudience = "Myself"; const string TokenIssuer = "MyProject";
在 Startup.cs 文件中,将以下内容添加到ConfigureServices 方法中:
var keySecret = authenticationConfiguration["JwtSigningKey"]; var symmetricKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(keySecret)); services.AddTransient(_ => new JwtSignInHandler(symmetricKey)); services.AddAuthentication(options => { options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; }) .AddJwtBearer(options => { options.TokenValidationParameters.ValidateIssuerSigningKey = true; options.TokenValidationParameters.IssuerSigningKey = symmetricKey; options.TokenValidationParameters.ValidAudience = JwtSignInHandler.TokenAudience; options.TokenValidationParameters.ValidIssuer = JwtSignInHandler.TokenIssuer; });
在 Startup.cs 文件中任何需要用户信息的中间件之前添加以下行:
app.UseAuthentication();
创建一个类来处理 JWT 令牌生成:
class JwtSignInHandler { public const string TokenAudience = "Myself"; public const string TokenIssuer = "MyProject"; private readonly SymmetricSecurityKey key; public JwtSignInHandler(SymmetricSecurityKey symmetricKey) { this.key = symmetricKey; } public string BuildJwt(ClaimsPrincipal principal) { var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256); var token = new JwtSecurityToken( issuer: TokenIssuer, audience: TokenAudience, claims: principal.Claims, expires: DateTime.Now.AddMinutes(20), signingCredentials: creds ); return new JwtSecurityTokenHandler().WriteToken(token); } }
在要返回令牌的控制器操作中,调用 BuildJwt 方法:
[HttpPost] public string AnonymousSignIn([FromServices] JwtSignInHandler tokenFactory) { var principal = new System.Security.Claims.ClaimsPrincipal(new[] { new System.Security.Claims.ClaimsIdentity(new[] { new System.Security.Claims.Claim(System.Security.Claims.ClaimTypes.Name, "Demo User") }) }); return tokenFactory.BuildJwt(principal); }
通过以下步骤,您的 ASP.NET Core Web API应用程序将配置为使用基于令牌的身份验证,使您的 AngularJS 应用程序能够安全地访问受保护的资源。
以上是如何在 ASP.NET Core 中为 AngularJS 应用程序实现基于令牌的身份验证?的详细内容。更多信息请关注PHP中文网其他相关文章!