我想使用我的 Azure AD 应用程序注册来创建多个客户端密钥。我陷入了两个问题,并且无法找到有关这些问题的任何文档:
是否有一个 API(图形或任何其他)我可以用来自动化
生成和删除客户端凭证秘密?
您可以通过调用 添加密码 api 生成客户端密钥,或通过调用 删除密码 api 删除客户端密钥。
请注意api中的
{id}
是Object ID
。
一个客户秘密的数量是否有限制? 单个应用程序?
取决于您的应用是否支持个人账户登录。如果您的应用程序支持个人帐户登录,则最多只能创建两个客户端密钥。
如果您的应用程序仅支持工作帐户登录,则创建的客户端密钥数量将没有限制。
您可以通过查看应用程序的manifest了解或修改应用程序支持的账户类型。它是清单中的 signInAudience 属性。
您可以使用以下示例代码来生成应用程序凭据:
var graphClient = new GraphServiceClient( authProvider );
var passwordCredential = new PasswordCredential
{
DisplayName = "Password name"
};
await graphClient.Applications["{application-id}"]
.AddPassword(passwordCredential)
.Request()
.PostAsync();
使用 github 操作:
name: Azure App Registration - Bolivia
on:
workflow_dispatch:
jobs:
certificate-secret:
name: Renew Secret
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Renew Secret
env:
CLIENT_ID: ${{ secrets.AZURE_APP_REGISTRATIONS_CLIENT_ID }}
CLIENT_SECRET: ${{ secrets.AZURE_APP_REGISTRATIONS_CLIENT_SECRET }}
TENANT_ID: ${{ secrets.AZURE_APP_REGISTRATIONS_TENANT_ID }}
run: |
TOKEN=$(curl -X POST -H "Content-Type: application/x-www-form-urlencoded" \
-d "client_id=${CLIENT_ID}&client_secret=${CLIENT_SECRET}&grant_type=client_credentials&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default" \
https://login.microsoftonline.com/${TENANT_ID}/oauth2/v2.0/token | \
python3 -c "import sys, json; print(json.load(sys.stdin)['access_token'])")
OBJECT_ID=23cfbbde-xxxx-xxxx-xxxx-xxxxxxxxxx
curl -X POST -H "Authorization: Bearer ${TOKEN}" -H "Content-Type: application/json" \
--data '{"passwordCredential": {"displayName": "Enable only 2 years"}}' \
https://graph.microsoft.com/v1.0/applications/${OBJECT_ID}/addPassword