我',尝试使用我的自定义提供程序设置 Airflow Authenticate,但由于某种原因,它忽略了我设置并始终使用的重定向 URI
https://my-airflow/oauth-authorized/my provider
我可以在有效负载中看到这一点。应该使用
https://my-airflow/oauth2/callback
因为这是在提供商配置和我的身份服务器上设置的。
这是我的 webserver_appconfig.py
import os
from airflow.configuration import conf
from airflow.utils.log.logging_mixin import LoggingMixin
from flask_appbuilder.security.manager import AUTH_OAUTH
from airflow.www.security import AirflowSecurityManager
SQLALCHEMY_DATABASE_URI = conf.get("core","SQL_ALCHEMY_CONN")
basedir = os.path.abspath(os.path.dirname(__file__))
CSRF_ENABLED = True
AUTH_TYPE = AUTH_OAUTH
AUTH_USER_REGISTRATION_ROLE = "Public"
AUTH_USER_REGISTRATION = True
class CustomSecurity(AirflowSecurityManager,
LoggingMixin):
def get_oauth_user_info(self, provider, response=None):
logging.debug("response received : {0}.".format(provider))
me = self.appbuilder.sm.oauth_remotes[provider].get("userinfo")
logging.error(me)
return {"preferred_username": me.data.get("preferred_username",""),
"first_name": me.data.get("given_name", ""),
"last_name": me.data.get("family_name", ""),
"email": me.data.get("email", "")
}
OAUTH_PROVIDERS = [
{
'name':'my-provider',
'token_key':'access_token',
'icon':'fa-globe',
'redirect_uri': 'my-airflow/oauth2/callback',
'remote_app': {
'client_id': 'urn:my-airflow',
'client_secret': 'xxxxxx',
'request_token_params': {'scope': 'email profile'},
'issuer': 'https://my-airflow:443/openam/oauth2',
'token_endpoint': 'https://my-airflow/openam/oauth2/access_token',
'userinfo_endpoint': 'https://my-airflow/openam/oauth2/userinfo',
'access_token_url': 'https://my-airflow/openam/oauth2/access_token',
'authorize_url': 'https://my-airflow/openam/oauth2/authorize',
}
}
]
当我点击 https://my-airflow 时,我看到了登录选项 使用 ouath,我被定向到我的自定义提供商身份页面,但随后它抱怨 URI 不匹配...
希望这有帮助。
https://www.restack.io/docs/airflow-faq-aws-eks-rbac
验证重定向 URI:确保 oAuth 提供商设置中指定的重定向 URI 与 Airflow 配置中的重定向 URI 匹配。重定向 URI 的格式应为
https://