Azure Active Directory自定义应用程序密码截止期限
本文所述方法已失效,以下内容仅为归档。(2023年12月)
非常简单:Graph 浏览器生成
微软禁止了对应请求的发送,此方法已失效。
- 优点:步骤非常简单,不用下载任何文件,可以在原应用基础上创建新密码。
- 缺点:Graph 浏览器需要全剧管理员授予API权限,因此只有全局管理员账号或管理员事先已授权才能采用此法。
Graph 浏览器(Graph Explorer)是微软官方的API在线调试工具。文档地址:https://docs.microsoft.com/zh-CN/graph/api/overview?view=graph-rest-1.0
步骤
- 注册应用后,在
概述页面复制应用的对象ID。
- 打开Graph 浏览器,登录账号。
- 请求类型改为
POST,版本为1.0不变,右边的请求所使用的HTTP方法改为https://graph.microsoft.com/v1.0/applications/{对象id}/addPassword。
- 给予Graph浏览器权限,在
修改权限(预览版)中,打开权限面板,授予许可Application.ReadWrite.All和Directory.AccessAsUser.All权限,如果事先授予过了就不用管。 - 运行查询,如果成功,在
响应预览可以看到secretText,就是我们想要的客户端密码了。
- 回到Azure Active Directory的对应应用界面,看到新增了客户端密码,表示成功。

简单:Azure CLI或Azure Cloud Shell命令生成
- 优点:步骤简单,不借助第三方工具。
- 缺点:命令行界面,不能在原有应用上新增密钥,需要管理员权限。
步骤
如果有Azure订阅可以直接使用Azure Cloud Shell,没有Azure订阅需要下载安装Azure CLI,Azure CLI可以安装在 Windows、macOS 和 Linux 环境中,安装方式可参考官方文档。
- 使用如下命令登录。必须要有
--allow-no-subscriptions。
az login --allow-no-subscriptions- 使用如下命令创建应用:
az ad app create --display-name office-api --end-date 2077-07-07 --password 1234s8yge4se5gh --required-resource-accesses "[{'resourceAccess': [{'id': '19dbc75e-c2e2-444c-a770-ec69d8559fc7','type': 'Role'},{'id': '741f803b-c850-494e-b5df-cde7c675a1ca','type': 'Role'}],'resourceAppId': '00000003-0000-0000-c000-000000000000'}]"--display-name 是此次创建应用的显示名称, --end-date 是 API 到期时间,格式 YYYY-MM-DD, --password 就是 客户端密码(client secret), --required-resource-accesses 代表 API 拥有的权限,这里授予了 Directory.ReadWrite.All 和 User.ReadWrite.All 两个权限。 appId 就是 应用程序(客户端) ID
(client id) ,后面要用到,odata.metadata 里面包含了 对象 ID(tenant id)。
- 如果是管理员,可用如下命令给予管理员同意。
az ad app permission admin-consent --id appId
之后会生成一个新的应用程序ID以替换之前生成的。 - 回到Azure Active Directory网页版的对应应用界面,看到新增了客户端密码,表示成功。
中等:使用Chrome扩展TamperDev修改HTTPS请求
我的浏览器不兼容这个扩展,没法复刻,只能借用原文图片了。(原文见参考资料)
步骤
- 安装[TamperDev]扩展,并开启扩展程序的拦截功能。

- 进入Azure Active Directory的对应应用界面,打开添加新客户端密码选项页面。

- 打开TamperDev扩展界面,扩展会捕捉请求,可以看到即将提交的请求,修改
endDateTime字段。
- 点击橙色按钮发送请求,随后立即点击取消停止TamperDev的调试,,否则可能会出现error 1错误。
复杂:使用Fiddler修改HTTPS请求
- 优点:无需任何权限。
- 缺点:需要两个软件,且操作不容易理解。
步骤
- 下载Fiddler软件。点此下载
- 打开Fiddler的选项界面(菜单
Tools→Options),勾选HTTPS下的Capture HTTPS CONNECTs和Decrypt HTTPS Traffic,会弹出安装证书要求,点击同意。不同意的可以不用看了

- 安装Chrome扩展程序Proxy SwitchyOmega。
- 在扩展界面,新建一个名为
Fidder的情景模式,设置如下图所示。然后应用选项。
- 打开Azure Active Directory对应页面,切换到Fidder代理,网页会刷新一次。
- 先随意创建一个客户端密码,说明、有效期随便写。

- 在Fidder中找到刚刚提交的创建新客户端密码请求,右击请求在菜单中选择
Replay→Reissue from Composer,在Composer下的Parsed修改Request Body的displayname(说明)和endDateTime(截止时间)字段,点击右上方Excute执行。
- 一会Fidder就会出现类似的请求,这就是我们修改后的请求。查看修改的请求,在*
Inspectors下方的JSON选项卡*中有应用的客户端密码,复制并保存。
- 回到Azure Active Directory网页版的对应应用界面,看到新增了客户端密码,表示成功。
实际上使用类似能捕捉和修改HTTPS请求的软件都可以实现。
参考资料
修改应用密钥有效期之 Chrome 扩展 TamperDev 篇. 1ove论坛
本博客所有文章除特别声明外,均采用 CC BY-NC 4.0 许可协议。转载请注明来源 艾米莉亚蜂蜜屋!
评论

