Python authlib JWT算法使用验证

Python authlib JWT算法使用验证,python,jwt,authlib,Python,Jwt,Authlib,我正在用python模块创建一个flask web应用程序。我的问题是关于在路由包装器中验证接收到的JWT。当我验证令牌及其有效负载时,我不太确定如何确保它是使用正确的HS256算法签名的,而不是设置为“无”以完全绕过安全性。我无法理解如何做到这一点,只有从 我当前的限制路线总结草案: def需要_auth(f): @包装(f) def装饰(*args,**kwargs): token=get\u token\u auth\u header() 索赔选项={ “国际空间站”:{ “必要”:正确,

我正在用python模块创建一个flask web应用程序。我的问题是关于在路由包装器中验证接收到的JWT。当我验证令牌及其有效负载时,我不太确定如何确保它是使用正确的HS256算法签名的,而不是设置为“无”以完全绕过安全性。我无法理解如何做到这一点,只有从 我当前的限制路线总结草案:

def需要_auth(f):
@包装(f)
def装饰(*args,**kwargs):
token=get\u token\u auth\u header()
索赔选项={
“国际空间站”:{
“必要”:正确,
“价值”:发行人
},
“澳元”:{
“必要”:正确,
“价值观”:受众
},
“经验”:{
“验证”:JWTClaims.validate\u exp,
},
“sub”:{
“本质”:真实
},
“is_admin”:{
“必要”:正确,
“值”:[正确,错误]
},
“is_主持人”:{
“必要”:正确,
“值”:[正确,错误]
}
}
尝试:
#TODO是否在此处设置一个选项或什么来检查alg in令牌?
claims=jwt.decode(令牌、秘密、claims\u选项=claims\u选项)
除InvalidTokenError为e外:
引发AuthError({“代码”:“无效的\u令牌”,
“说明”:“令牌无效”},401)
除了BadSignatureError作为e:
引发AuthError({“代码”:“错误签名”,
“说明”:“令牌签名错误(与有效负载/篡改的有效负载/错误的机密不匹配)”,401)
除ExpiredToken错误外,其他错误为e:
引发AuthError({“代码”:“令牌\u已过期”,
“说明”:“令牌已过期”},401)
#是否需要这样做,或者如何利用所使用的库更好地做到这一点?
如果claims.header[“alg”]=无或claims.header[“alg”]!=算法:
#防止身份验证剥离/将身份验证设置为无攻击以及将rsa设置为hs256并加密公钥的攻击
引发AuthError({“代码”:“错误签名”,
“说明”:“给定的签名算法与预期的算法不匹配”},401)
尝试:
claims.validate()
返回f(*args,**kwargs)
除以下情况外:
raise AuthError({“代码”:“缺少索赔”,
“说明”:
“索赔丢失”},401)
除无效分类错误外,例如:
引发AuthError({“代码”:“无效的\u声明”,
“说明”:
“不正确的声明,”
“请检查受众和发行人”},401)
除ExpiredToken错误外,其他错误为e:
引发AuthError({“代码”:“令牌\u已过期”,
“说明”:“令牌已过期”},401)
回报

从authlib.jose导入JsonWebToken
并初始化
jwt=JsonWebToken(['HS256'])
。如果尝试解码使用不同alghoritm签名的令牌,将从authlib中引发不支持的DalghorithmError
。请导入JsonWebToken
并初始化
jwt=JsonWebToken(['HS256'])
。如果尝试解码使用其他alghoritm签名的令牌,将引发不支持的AlghorithError