如何解决使用python authlib解析id_token时出现UnsupportedAlgorithmError
我有一个oauth / oidc服务器和一个客户端,都使用authlib 0.14.3和flask集成。服务器使用HS256对id_token进行签名。客户端具有这些端点:
oauth = OAuth()
oauth.init_app(app)
oauth.register(
name='mydomain',client_id=OAUTH_CLIENT_ID,client_secret=OAUTH_CLIENT_SECRET,access_token_url="http://localhost:5000/oauth/token",authorize_url="http://localhost:5000/oauth/authorize",client_kwargs={
'scope': 'openid profile'
}
)
@app.route("/login",methods=["GET","POST"])
@sheraf.connection()
def login():
redirect_uri = url_for('users.account.authorize',_external=True)
return oauth.mydomain.authorize_redirect(redirect_uri)
@app.route('/authorize')
def authorize():
token = oauth.mydomain.authorize_access_token()
userinfo = oauth.mydomain.parse_id_token(token)
...
return redirect('/')
parse_id_token
引发UnsupportedAlgorithmError
。与调试器一起玩时,我发现authlib/jose/rfc7515/jws.py:JsonWebSignature._algorithms
只有RS256
可用。
我想念什么吗?
解决方法
我在oidc服务器注册中缺少必需的参数:
oauth.register(
name='mydomain',client_id=OAUTH_CLIENT_ID,client_secret=OAUTH_CLIENT_SECRET,access_token_url="http://localhost:5000/oauth/token",authorize_url="http://localhost:5000/oauth/authorize",id_token_signing_alg_values_supported=["HS256","RS256"],jwks={
"keys": [{
"kid": "my-key-id","kty": "oct","alg": "HS256","k": urlsafe_b64encode("secret-key"),}]
},client_kwargs={
'scope': 'openid profile'
}
)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。