我正在尝试将Flask应用程序与使用两种端点装饰器的keydape public连接:@oidc.require_login和@oidc.accept_token
。然而,我遇到了以下问题
对于KeyClope机密客户端,我可以访问Flask应用程序中的所有端点。这是我的应用程序配置:
flask_app.config.update({
'SECRET_KEY': 'no-body-knows',
'TESTING': True,
'DEBUG': True,
'OIDC_CLIENT_SECRETS': 'client_secrets.json',
'OIDC_OPENID_REALM': 'testrealm',
'OIDC_INTROSPECTION_AUTH_METHOD': 'client_secret_post',
'OIDC_SCOPES': ['openid', 'email', 'profile'],
'OIDC_COOKIE_SECURE':True,
'OIDC_CALLBACK_ROUTE':'/oidc_callback',
'OIDC_TOKEN_TYPE_HINT': 'access_token',
'OIDC_RESOURCE_SERVER_ONLY':False
})
以及我的(经过消毒的)客户的内容_secrets.json
{
"web": {
"client_id": "confidential-client",
"client_secret": "axxxxxxx-1xxx-5xxx-exxxx-2xxxxxxx",
"auth_uri": "https://my-keycloak-url.com/auth/realms/testrealm/protocol/openid-connect/auth",
"token_uri": "https://my-keycloak-url.com/auth/realms/testrealm/protocol/openid-connect/token",
"issuer": "https://my-keycloak-url.com/auth/realms/testrealm",
"userinfo_uri": "https://my-keycloak-url.com/auth/realms/testrealm/protocol/openid-connect/userinfo",
"token_introspection_uri": "https://my-keycloak-url.com/auth/realms/testrealm/protocol/openid-connect/token/introspect",
"redirect_uris": [
"http://localhost:5000/oidc_callback"
],
"bearer_only
": "true"
}
}
对于publickeydape客户端,我修改了client_secrets.json如下(只需将client_secret设置为空字符串:
{
"web": {
"client_id": "public-client",
**"client_secret": "",**
"auth_uri": "https://my-keycloak-url.com/auth/realms/testrealm/protocol/openid-connect/auth",
"token_uri": "https://my-keycloak-url.com/auth/realms/testrealm/protocol/openid-connect/token",
"issuer": "https://my-keycloak-url.com/auth/realms/testrealm",
"userinfo_uri": "https://my-keycloak-url.com/auth/realms/testrealm/protocol/openid-connect/userinfo",
"token_introspection_uri": "https://my-keycloak-url.com/auth/realms/testrealm/protocol/openid-connect/token/introspect",
"redirect_uris": [
"http://localhost:5000/oidc_callback"
],
"bearer_only": "true"
}
}
但是,当我在公钥斗篷客户端下部署此Flask时,我仍然可以访问@oidc.require_登录端点,但是@oidc.accept_token
API端点返回此错误:
{"error": "invalid_token", "error_description": "Token required but invalid"}.
使用KeyClope公共客户端是此Flask应用程序所在的微服务环境的一项要求。我不控制此要求,其他微服务(用Java、Angular等编写)对此KeyClope配置没有任何问题
有没有一种方法可以使用@oidc.accept_token
decorator将keydape公共客户端与flask oidc端点一起使用?在我看来,这是一种常见的oidc场景
我在Python3.8.6上使用 烧瓶1.0.2 第1.4.0节
目前没有回答
相关问题 更多 >
编程相关推荐