Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 20 additions & 2 deletions airflow/providers/fab/auth_manager/security_manager/override.py
Original file line number Diff line number Diff line change
Expand Up @@ -1845,6 +1845,13 @@ def remove_permission_from_role(self, role: Role, permission: Permission) -> Non
log.error(const.LOGMSG_ERR_SEC_DEL_PERMROLE, e)
self.get_session.rollback()

def get_oid_identity_url(self, provider_name: str) -> str | None:
"""Returns the OIDC identity provider URL."""
for provider in self.openid_providers:
if provider.get("name") == provider_name:
return provider.get("url")
return None

@staticmethod
def get_user_roles(user=None):
"""
Expand Down Expand Up @@ -2169,10 +2176,21 @@ def get_oauth_user_info(self, provider: str, resp: dict[str, Any]) -> dict[str,
data = me.json()
log.debug("User info from Okta: %s", data)
return {
"username": "okta_" + data.get("sub", ""),
"username": f"{provider}_{data['sub']}",
"first_name": data.get("given_name", ""),
"last_name": data.get("family_name", ""),
"email": data.get("email", ""),
"email": data["email"],
"role_keys": data.get("groups", []),
}
# for Auth0
if provider == "auth0":
data = self.appbuilder.sm.oauth_remotes[provider].userinfo()
log.debug("User info from Auth0: %s", data)
return {
"username": f"{provider}_{data['sub']}",
"first_name": data.get("given_name", ""),
"last_name": data.get("family_name", ""),
"email": data["email"],
"role_keys": data.get("groups", []),
}
# for Keycloak
Expand Down
2 changes: 1 addition & 1 deletion airflow/providers/fab/provider.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ dependencies:
# Every time we update FAB version here, please make sure that you review the classes and models in
# `airflow/providers/fab/auth_manager/security_manager/override.py` with their upstream counterparts.
# In particular, make sure any breaking changes, for example any new methods, are accounted for.
- flask-appbuilder==4.3.10
- flask-appbuilder==4.3.11
- flask-login>=0.6.2
- google-re2>=1.0

Expand Down
2 changes: 1 addition & 1 deletion generated/provider_dependencies.json
Original file line number Diff line number Diff line change
Expand Up @@ -463,7 +463,7 @@
"fab": {
"deps": [
"apache-airflow>=2.9.0",
"flask-appbuilder==4.3.10",
"flask-appbuilder==4.3.11",
"flask-login>=0.6.2",
"flask>=2.2,<2.3",
"google-re2>=1.0"
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -678,7 +678,7 @@ exasol = [ # source: airflow/providers/exasol/provider.yaml
"pyexasol>=0.5.1",
]
fab = [ # source: airflow/providers/fab/provider.yaml
"flask-appbuilder==4.3.10",
"flask-appbuilder==4.3.11",
"flask-login>=0.6.2",
"flask>=2.2,<2.3",
"google-re2>=1.0",
Expand Down