|
|
@ -92,7 +92,7 @@ namespace AuthStudy.Authentication.Browser
|
|
|
|
var device = new Claim("Device", clientInfo.Device.ToString()); //设备 //设备
|
|
|
|
var device = new Claim("Device", clientInfo.Device.ToString()); //设备 //设备
|
|
|
|
|
|
|
|
|
|
|
|
//声明集合
|
|
|
|
//声明集合
|
|
|
|
var Claims = new List<Claim>
|
|
|
|
var claims = new List<Claim>
|
|
|
|
{
|
|
|
|
{
|
|
|
|
browser,
|
|
|
|
browser,
|
|
|
|
os,
|
|
|
|
os,
|
|
|
@ -100,7 +100,7 @@ namespace AuthStudy.Authentication.Browser
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
//身份:包含声明集合,是声明集合的包装类,一个身份对应多个声明
|
|
|
|
//身份:包含声明集合,是声明集合的包装类,一个身份对应多个声明
|
|
|
|
var claimsIdentity = new ClaimsIdentity(Claims, DefaultSchemeName);
|
|
|
|
var claimsIdentity = new ClaimsIdentity(claims, DefaultSchemeName);
|
|
|
|
|
|
|
|
|
|
|
|
//当事人/主角:是身份Identity的包装,对应多个身份
|
|
|
|
//当事人/主角:是身份Identity的包装,对应多个身份
|
|
|
|
var claimsPrincipal = new ClaimsPrincipal(claimsIdentity);
|
|
|
|
var claimsPrincipal = new ClaimsPrincipal(claimsIdentity);
|
|
|
@ -118,16 +118,16 @@ namespace AuthStudy.Authentication.Browser
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// <summary>
|
|
|
|
/// 无认证:服务端向客户端(浏览器)发质询(要求提供一个新票据),质询体现为 htpp请求的响应。
|
|
|
|
/// 无认证:服务端向客户端(浏览器)发质询(要求提供一个新票据),质询体现为 http请求的响应。
|
|
|
|
/// </summary>
|
|
|
|
/// </summary>
|
|
|
|
public async Task ChallengeAsync(AuthenticationProperties? properties)
|
|
|
|
public async Task ChallengeAsync(AuthenticationProperties? properties)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
properties?.Parameters.Add("x-itme", "无效的认证");
|
|
|
|
properties?.Parameters.Add("x-item", "无效的认证");
|
|
|
|
|
|
|
|
|
|
|
|
CurrentHttpContext!.Response.StatusCode = 401;
|
|
|
|
CurrentHttpContext!.Response.StatusCode = 401;
|
|
|
|
if (CurrentHttpContext?.Response.Body.CanWrite ?? false)
|
|
|
|
if (CurrentHttpContext?.Response.Body.CanWrite ?? false)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
var msg = UTF8Encoding.UTF8.GetBytes("认证无效");
|
|
|
|
var msg = Encoding.UTF8.GetBytes("认证无效");
|
|
|
|
await CurrentHttpContext!.Response.Body.WriteAsync(msg);
|
|
|
|
await CurrentHttpContext!.Response.Body.WriteAsync(msg);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
CurrentHttpContext?.Items.Add("认证结束时间", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
|
|
|
|
CurrentHttpContext?.Items.Add("认证结束时间", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
|
|
|
@ -135,14 +135,14 @@ namespace AuthStudy.Authentication.Browser
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// <summary>
|
|
|
|
/// 无权限:服务端向客户端(浏览器)发质询(要求提供一个新票据),质询体现为 htpp请求的响应。
|
|
|
|
/// 无权限:服务端向客户端(浏览器)发质询(要求提供一个新票据),质询体现为 http请求的响应。
|
|
|
|
/// </summary>
|
|
|
|
/// </summary>
|
|
|
|
public async Task ForbidAsync(AuthenticationProperties? properties)
|
|
|
|
public async Task ForbidAsync(AuthenticationProperties? properties)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
CurrentHttpContext!.Response.StatusCode = 403;
|
|
|
|
CurrentHttpContext!.Response.StatusCode = 403;
|
|
|
|
if (CurrentHttpContext?.Response.Body.CanWrite ?? false)
|
|
|
|
if (CurrentHttpContext?.Response.Body.CanWrite ?? false)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
var msg = UTF8Encoding.UTF8.GetBytes("无权访问");
|
|
|
|
var msg = Encoding.UTF8.GetBytes("无权访问");
|
|
|
|
await CurrentHttpContext!.Response.Body.WriteAsync(msg);
|
|
|
|
await CurrentHttpContext!.Response.Body.WriteAsync(msg);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//return Task.CompletedTask;
|
|
|
|
//return Task.CompletedTask;
|
|
|
@ -160,7 +160,7 @@ namespace AuthStudy.Authentication.Browser
|
|
|
|
/// <summary>
|
|
|
|
/// <summary>
|
|
|
|
/// 初始化
|
|
|
|
/// 初始化
|
|
|
|
/// </summary>
|
|
|
|
/// </summary>
|
|
|
|
public async Task InitializeAsync(AuthenticationScheme scheme, Microsoft.AspNetCore.Http.HttpContext context)
|
|
|
|
public async Task InitializeAsync(AuthenticationScheme scheme, HttpContext context)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
//初始化工作,传递给认证方法和授权中间件
|
|
|
|
//初始化工作,传递给认证方法和授权中间件
|
|
|
|
CurrentHttpContext = context;
|
|
|
|
CurrentHttpContext = context;
|
|
|
|