# JWT鉴权
该示例是基于Air.Cloud.Plugins.Jwt 包来实现的框架默认的授权检查(JWTEncryption),如果你需要定制化你的授权机制,则可以实现IJwtHandlerStandard 标准
# 包名
Air.Cloud.Plugins.Jwt
# 所用标准
IJwtHandlerStandard : IAuthenticationStandard
提示
该标准为授权标准的子标准,仅用作JWT鉴权,其他授权标准请关注Github中的框架更新
# 使用示例
public class AppJwtHandler : IAuthorizationHandler
{
public async Task HandleAsync(AuthorizationHandlerContext context)
{
//检查授权
bool ValidateResult = JWTEncryption.ValidateToken(context, context.GetCurrentHttpContext(),expiredTime:720);
if (ValidateResult)
{
//授权成功
await AppRealization.Jwt.AuthorizeHandleAsync(context); return;
}
//授权失败
await AppRealization.Jwt.UnAuthorizeHandleAsync(context);
}
}
//在你的startup.cs里面增加以下代码
services.WebJwtHandlerInject<AppJwtHandler>(enableGlobalAuthorize: false);
# 标准定义参考
using Microsoft.AspNetCore.Authorization;
namespace Air.Cloud.Core.Standard.Authentication.Jwt
{
/// <summary>
/// JWT身份认证标准
/// </summary>
public interface IJwtHandlerStandard:IAuthenticationStandard
{
/// <summary>
/// 验证成功
/// </summary>
/// <param name="context"></param>
/// <returns></returns>
public Task AuthorizeHandleAsync(AuthorizationHandlerContext context);
/// <summary>
/// 验证失败
/// </summary>
/// <param name="context"></param>
/// <returns></returns>
public Task UnAuthorizeHandleAsync(AuthorizationHandlerContext context);
}
}
# 配置项
# JwtSettings
| 配置项 | 说明 | 默认值 |
|---|---|---|
| ServicePort | 授权服务端口 | 无(必须) |
| ValidateIssuerSigningKey | 是否验证签名密钥 | true |
| ValidateIssuer | 是否验证签发者 | true |
| ValidIssuer | 有效签发者 | "air.cloud.cor" |
| ValidateAudience | 是否验证受众 | true |
| ValidAudience | 有效受众 | "air.cloud.webapp" |
| ValidateLifetime | 是否验证令牌有效期 | true |
| IsRefreshAccessToken | 是否刷新访问令牌 | false |
| ExpiredTime | 令牌过期时间(分钟) | 20 |
| ClockSkew | 时钟偏差(分钟) | 10 |
# 授权示例配置
{
"JwtSettings": {
"ValidateIssuerSigningKey": true,
"ValidateIssuer": true,
"ValidIssuer": "san shi soft",
"ValidateAudience": true,
"ValidAudience": "client",
"ValidateLifetime": true,
"IsRefreshAccessToken": false,
"ExpiredTime": 120,
"ClockSkew": 5
}
}
← Kafka Swagger 文档 →