You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python修改Azure AD(Entra ID)应用注册的重定向URL

问题解答

一、用Python动态配置Azure AD应用的重定向URL

要根据不同条件设置不同的重定向URL,核心是通过Azure相关SDK修改应用的重定向URL属性。以下是具体实现步骤:

1. 确认权限配置

你的服务主体需拥有Application.ReadWrite.All或Application.ReadWrite.OwnedBy的API权限,且已通过Azure AD门户完成管理员同意。

2. 基于条件更新重定向URL的代码示例

假设需根据环境(开发/生产)切换不同URL,代码如下:

from azure.identity import ClientSecretCredential
from azure.graphrbac import GraphRbacManagementClient
from azure.graphrbac.models import ApplicationUpdateParameters

# 基础配置
tenant_id = "你的租户ID"
client_id = "你的应用客户端ID"
client_secret = "你的客户端密钥"

# 初始化凭证与客户端
credential = ClientSecretCredential(tenant_id, client_id, client_secret)
graph_client = GraphRbacManagementClient(credential, tenant_id)

# 根据条件返回对应重定向URL
def get_target_reply_urls(env):
    if env == "dev":
        return ["https://dev.yourdomain.com/login/callback", "http://localhost:3000/callback"]
    elif env == "prod":
        return ["https://prod.yourdomain.com/login/callback"]
    else:
        return ["https://default.yourdomain.com/login/callback"]

# 目标环境(可根据场景动态传入)
target_env = "dev"
new_reply_urls = get_target_reply_urls(target_env)

# 更新应用的重定向URL
update_params = ApplicationUpdateParameters(reply_urls=new_reply_urls)
graph_client.applications.update(client_id, update_params)

print(f"重定向URL已更新为: {new_reply_urls}")

3. 追加URL的处理方式

若需在现有URL基础上追加而非覆盖,可先获取当前URL列表再合并更新:

app_info = graph_client.applications.get(client_id)
current_urls = app_info.reply_urls or []
new_urls = current_urls + ["https://new-addition.com/callback"]
update_params = ApplicationUpdateParameters(reply_urls=new_urls)
graph_client.applications.update(client_id, update_params)

注:azure-graphrbac属于旧版库,建议优先使用最新的Microsoft Graph SDK,逻辑类似但API调用更规范。


二、Python代码与az ad app show结果不一致的原因及解决方法

1. 核心差异原因

az ad app show调用的是Microsoft Graph API,而你使用的azure-graphrbac库调用的是旧版Azure AD Graph API,两者的数据结构、返回字段范围存在差异,导致结果不一致。

2. 改用Microsoft Graph SDK的解决方案

使用最新的msgraph-sdk-python库调用Microsoft Graph API,即可获得与az ad app show一致的结果:

步骤1:安装依赖

pip install msgraph-sdk azure-identity

步骤2:修正后的代码

from azure.identity import ClientSecretCredential
from msgraph import GraphServiceClient

# 基础配置
tenant_id = "你的租户ID"
client_id = "你的应用客户端ID"
client_secret = "你的客户端密钥"

# 初始化凭证与Graph客户端
credential = ClientSecretCredential(tenant_id, client_id, client_secret)
scopes = ["https://graph.microsoft.com/.default"]
graph_client = GraphServiceClient(credential, scopes)

# 获取应用完整信息(与az ad app show等价)
app_info = graph_client.applications.by_application_id(client_id).get()

print(f"Application ID: {app_info.app_id}")
print(f"Display Name: {app_info.display_name}")
print(f"Reply URLs: {app_info.web.redirect_uris}")
print(f"其他扩展字段: {app_info.additional_data}")

3. 字段对应关系说明

旧版Azure AD Graph的reply_urls在Microsoft Graph中对应web.redirect_uris,其他字段也有类似结构调整,使用新SDK可获取完整的应用详情。


内容的提问来源于stack exchange,提问作者BBnew

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 02:16:16