Azure Active Directory自定义应用程序密码截止期限
非常简单: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论坛