我开始使用JWT授权构建新应用程序。我们的团队已经用Java编写了OAuth 2服务器,因此我的目标是:使用公共密钥检查密钥。但是我不知道该怎么做。如果使用.NET身份,则必须使用实体框架,但仅将Cassandra用作数据库。
我如何在不使用EF的情况下实施它?您知道任何教程吗?
您不需要任何ASP.NET核心内容。一种简单的方法是:
nu-get the软件包
System.IdentityModel.Tokens.Jwt,
Microsoft.IdentityModel.Tokens
设置一些验证参数:
var validationParameters = new TokenValidationParameters
{
RequireExpirationTime = true,
ValidateLifetime = true,
IssuerSigningKeys = keys, // Your public keys.
ValidAudience = "my valid audience",
ValidIssuer = "my valid issuer"
}
致电ValidateToken获取带有索赔和内容的ClaimsPrincipal
。 token
是您的JWT字符串,例如从授权http标头中解析。
var handler = new JwtSecurityTokenHandler();
handler.ValidateToken(token, validationParameters, out SecurityToken validatedToken);
使用上述IdentityModel.Tokens
软件包中使用JsonWebKeySet
,您可以自动从OpenID Connect配置获得键:
https://github.com/IndentityModel/IndentityModel/blob/master/source/indistitymodel.shared/jwt/jsonwebkeyset.cs
有很多Microsoft(和其他)文档可用(确保您正在查看与您正在使用的版本有关的文档!) - 谷歌搜索很容易找到它们但是EF当然不需要如下所示。
直接由应用程序管理身份或用户信息。取而代之的是,它将直接从JWT令牌中获取所有用户信息,从而对呼叫者进行身份验证。 https://blogs.msdn.microsoft.com/webdev/2017/04/06/jwt-validation-and-yathorization-in-rathorization-in-asp-net-core/
这是版本1.1的简单示例https://github.com/williamhallatt/aspnet-core-webapi-jwt-auth-auth-example
和2.0的同一示例https://github.com/williamhallatt/aspnet-core-webapi-jwt-auth-auth-example/tree/dotnecore2.0