ow
This commit is contained in:
1 parent
31fbe199c1
commit
1c0c83af5f
469 files changed
+62544
-5
No files matched your search
@@ -0,0 +1,32 @@
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
|
||||
namespace CloudBuilder.Core.Authorization
|
||||
{
|
||||
public class AuthorizationHandler : IAuthorizationHandler, IAuthorize
|
||||
{
|
||||
/// <summary>
|
||||
/// 身份认证Authorize
|
||||
/// </summary>
|
||||
/// <param name="context"></param>
|
||||
/// <returns></returns>
|
||||
public virtual Task HandleAsync(AuthorizationHandlerContext context)
|
||||
{
|
||||
if (context.HasFailed)
|
||||
{
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
// 判断身份认证是否通过
|
||||
var isAuthenticated = context.User.Identity.IsAuthenticated;
|
||||
if (isAuthenticated)
|
||||
{
|
||||
context.Succeed(context.PendingRequirements.FirstOrDefault()!);
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
context.Fail();
|
||||
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace CloudBuilder.Core.Authorization
|
||||
{
|
||||
public interface IAuthorize
|
||||
{
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
using CloudBuilder.Core.Application.Options;
|
||||
using CloudBuilder.Core.Policy;
|
||||
using Microsoft.IdentityModel.Tokens;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IdentityModel.Tokens.Jwt;
|
||||
using System.Linq;
|
||||
using System.Security.Claims;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace CloudBuilder.Core.Authorization
|
||||
{
|
||||
public class JwtGenerate
|
||||
{
|
||||
private readonly JwtOptions jwtOptions;
|
||||
|
||||
public JwtGenerate(JwtOptions jwtOptions)
|
||||
{
|
||||
this.jwtOptions = jwtOptions;
|
||||
}
|
||||
|
||||
public string GenerateRefreshToken()
|
||||
{
|
||||
var randomNumber = new byte[32];
|
||||
using (var rng = RandomNumberGenerator.Create())
|
||||
{
|
||||
rng.GetBytes(randomNumber);
|
||||
return Convert.ToBase64String(randomNumber);
|
||||
}
|
||||
}
|
||||
|
||||
public string Generate(Dictionary<string, string> claims)
|
||||
{
|
||||
JwtOptions jwt = jwtOptions;
|
||||
|
||||
var token = string.Empty;
|
||||
|
||||
List<Claim> claimls = new List<Claim>();
|
||||
foreach (var claim in claims)
|
||||
{
|
||||
claimls.Add(new Claim(claim.Key, claim.Value));
|
||||
}
|
||||
|
||||
var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(jwt.Secret));
|
||||
var credentials = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
|
||||
|
||||
var tokenHandler = new JwtSecurityTokenHandler();
|
||||
var tokenDescriptor = new SecurityTokenDescriptor
|
||||
{
|
||||
NotBefore = DateTime.UtcNow,
|
||||
Issuer = jwt.Issuer,
|
||||
Audience = jwt.Audience,
|
||||
Subject = new ClaimsIdentity(claimls, ClaimPolicy.BEARER, ClaimPolicy.CLAINM_USERID, ClaimPolicy.ROLE),
|
||||
Expires = DateTime.UtcNow.AddMinutes(jwt.AccessExpireMins),
|
||||
SigningCredentials = credentials
|
||||
};
|
||||
|
||||
var securityToken = tokenHandler.CreateToken(tokenDescriptor);
|
||||
return tokenHandler.WriteToken(securityToken);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
using CloudBuilder.Core.Application.Options;
|
||||
using CloudBuilder.Core.Policy;
|
||||
using Microsoft.IdentityModel.Tokens;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IdentityModel.Tokens.Jwt;
|
||||
using System.Linq;
|
||||
using System.Security.Claims;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace CloudBuilder.Core.Authorization
|
||||
{
|
||||
[TypeScript]
|
||||
public class JwtInfo
|
||||
{
|
||||
public string AccessToken { get; set; } = null!;
|
||||
public string RefreshToken { get; set; } = null!;
|
||||
public DateTime CreatedTime { get; set; }
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Microsoft.AspNetCore.Authorization
|
||||
{
|
||||
public class PermissionOperateAttribute : Attribute
|
||||
{
|
||||
public PermissionOperateAttribute(string name)
|
||||
{
|
||||
Name = name;
|
||||
}
|
||||
|
||||
public PermissionOperateAttribute(string name, string operate)
|
||||
{
|
||||
Name = name;
|
||||
Operate = operate;
|
||||
}
|
||||
|
||||
public PermissionOperateAttribute(string name, Operate operate)
|
||||
{
|
||||
Name = name;
|
||||
Operate = operate.ToString();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取权限名称
|
||||
/// </summary>
|
||||
public string Name { get; private set; } = null!;
|
||||
|
||||
public string Operate { get; private set; } = null!;
|
||||
}
|
||||
|
||||
public enum Operate
|
||||
{
|
||||
None,
|
||||
Find,
|
||||
Print,
|
||||
Insert,
|
||||
Update,
|
||||
Delete,
|
||||
Submit,
|
||||
Approval
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace CloudBuilder.Core.Authorization
|
||||
{
|
||||
public class PermissionRequirement : IAuthorizationRequirement
|
||||
{
|
||||
|
||||
//public List<UserPermissionDisplayData> UserPermissionDisplayDatas { get; set; }
|
||||
|
||||
///// <summary>
|
||||
///// 认证授权类型
|
||||
///// </summary>
|
||||
//public string ClaimType { internal get; set; }
|
||||
|
||||
///// <summary>
|
||||
///// 发行人
|
||||
///// </summary>
|
||||
//public string Issuer { get; set; }
|
||||
///// <summary>
|
||||
///// 订阅人
|
||||
///// </summary>
|
||||
//public string Audience { get; set; }
|
||||
///// <summary>
|
||||
///// 过期时间
|
||||
///// </summary>
|
||||
//public TimeSpan Expiration { get; set; }
|
||||
///// <summary>
|
||||
///// 签名验证
|
||||
///// </summary>
|
||||
//public SigningCredentials SigningCredentials { get; set; }
|
||||
public PermissionRequirement()
|
||||
{
|
||||
}
|
||||
//public PermissionRequirement(List<UserPermissionDisplayData> permissions)
|
||||
//{
|
||||
// //ClaimType = claimType;
|
||||
// UserPermissionDisplayDatas = permissions;
|
||||
// //Issuer = issuer;
|
||||
// //Audience = audience;
|
||||
// //Expiration = expiration;
|
||||
// //SigningCredentials = signingCredentials;
|
||||
//}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace CloudBuilder.Core.Authorization
|
||||
{
|
||||
public class TypeScriptAttribute : Attribute
|
||||
{
|
||||
public TypeScriptAttribute()
|
||||
{
|
||||
}
|
||||
|
||||
public TypeScriptAttribute(string name)
|
||||
{
|
||||
Name = name;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取权限名称
|
||||
/// </summary>
|
||||
public string Name { get; private set; } = null!;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user