我正在尝试使用JWTToken进行Azure Function中的自定义授权(我都是新手)。我有基本的JWTToken工作,现在我问是否有更好的方法
生成jwttoken时,我使用ClaimsIdentity添加自定义声明“ TestAllowAccess”
ClaimsIdentity claimsIdentity = new ClaimsIdentity (new List<Claim> ()
{
new Claim (ClaimTypes.NameIdentifier, "myemail@myprovider.com"),
new Claim (ClaimTypes.Role, "Administrator"),
new Claim ("TestAllowAccess", ""),
}, "Custom");
在azure函数中,验证令牌后,我将不得不读取令牌并比较有效载荷
[FunctionName ("Function1")]
public static IActionResult Run ([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)]HttpRequest req, ILogger log, ExecutionContext context)
{
// no error checking
string jwtToken = req.Headers ["Authorization"][0].Substring ("Bearer ".Length);
// validate token with validation parameters...
JwtSecurityTokenHandler tokenHandlerVerify = new JwtSecurityTokenHandler ();
tokenHandlerVerify.ValidateToken (jwtToken, tokenValidationParameters, out SecurityToken validatedToken);
// read for further validate authentication
JwtSecurityToken token = tokenHandlerVerify.ReadJwtToken (jwtToken);
if (!token.Payload.ContainsKey ("TestAllowAccess"))
throw new SecurityTokenException ("TestAllowAccess Fail");
}
我的问题是
这是进行自定义授权的正确方法吗?有没有更好的方法可以做到这一点,也许无需读取有效载荷
似乎所有功能中都有很多代码可以重复,我看到有EasyAuth,但我没有使用AD,这是我的自定义授权。 (我也会做黑名单并请求令牌)。有图书馆还是更简单的方法?