Azure active directory 如何从控制台在azure AD应用程序中设置oauth2AllowIdTokenImplicitFlow?

Azure active directory 如何从控制台在azure AD应用程序中设置oauth2AllowIdTokenImplicitFlow?,azure-active-directory,azure-powershell,azure-cli,Azure Active Directory,Azure Powershell,Azure Cli,是否有任何方法可以通过azure CLI或azure PowerShell更改azure AD应用程序中的属性oauth2AllowIdTokenImplicitFlow?您可以使用AzureAD PowerShell模块(): 您需要应用注册的objectId。内置Powershell或CLI当前不支持设置oauth2AllowIdTokenImplicitFlow。此外,似乎该属性只能在广告应用程序的清单中找到,我在任何文档中都找不到它(包括MS Graph或Azure广告图) 但是根据我的

是否有任何方法可以通过azure CLI或azure PowerShell更改azure AD应用程序中的属性oauth2AllowIdTokenImplicitFlow?

您可以使用AzureAD PowerShell模块():


您需要应用注册的objectId。

内置Powershell或CLI当前不支持设置
oauth2AllowIdTokenImplicitFlow
。此外,似乎该属性只能在广告应用程序的清单中找到,我在任何文档中都找不到它(包括MS Graph或Azure广告图)

但是根据我的测试,您可以通过Azure AD Graph API设置
oauth2AllowIdTokenImplicitFlow

有两种方法可以调用Azure AD Graph API,即使用Azure AD Graph Explorer或Powershell

  • 使用Azure AD图形浏览器
使用,只需登录您的用户帐户(确保您拥有更新应用程序的权限),然后按如下方式调用API

PATCH https://graph.windows.net/myorganization/applications/{object id of the application}?api-version=1.6

{
    "oauth2AllowIdTokenImplicitFlow":true
}
注意:当您发送请求时,进度条似乎永远不会完成,我不确定它是否是一个bug,但实际上它在一段时间后工作,您只需将
补丁
更改为
获取
,以检查应用程序的
OAuth2AllowTokenImplicitFlow

  • 使用PowerShell
如果要使用PowerShell,请执行以下步骤

1、然后和

2.导航到门户中的
Azure Active Directory
应用程序注册->
->查找并单击您的应用程序->
API权限
->
添加权限
->选择
Azure Active Directory图表
->单击
应用程序权限
->选择
应用程序。ReadWrite.All
权限->单击
添加权限
->单击
授予xxx的管理员许可

3.然后使用下面的powershell脚本,它在我这边运行良好(成功后将不返回任何内容),您可以在门户中检查结果或使用Azure AD Graph Explorer

$ClientID       = "a6ec906d-xxxxx00dd3" #ApplicationID
$ClientSecret   = "XwaNxxxxx/44"  #key from Application
$tennantid      = "bb58xxxxxxd6c65"
$objectid       = "ca8xxxef66db07c0" #object id of the application

$TokenEndpoint = {https://login.windows.net/{0}/oauth2/token} -f $tennantid 
$ARMResource = "https://graph.windows.net/";

$Body = @{
        'resource'= $ARMResource
        'client_id' = $ClientID
        'grant_type' = 'client_credentials'
        'client_secret' = $ClientSecret
}

$params = @{
    ContentType = 'application/x-www-form-urlencoded'
    Headers = @{'accept'='application/json'}
    Body = $Body
    Method = 'Post'
    URI = $TokenEndpoint
}

$token = Invoke-RestMethod @params

$accesstoken = $token.access_token

$url = {https://graph.windows.net/{0}/applications/{1}?api-version=1.6} -f $tennantid,$objectid

$header = @{
    'Authorization' = 'Bearer ' + $accesstoken
    'Content-Type' = 'application/json'
}

$json = @{
    oauth2AllowIdTokenImplicitFlow = 'false' #or true
}

$body = $json | ConvertTo-Json

Invoke-RestMethod –Uri $url –Headers $header -Body $body –Method PATCH

如果只需要检查IdToken,则可能需要使用属性-OAuth2Requiresponse

更新cmd:

连接AzureAD
设置AzureADApplication-ObjectId{yourAppId}-OAuth2Requiresponse$true
创建命令:

新AzureADApplication-DisplayName“MyApp”`
-主页“https:www.myapp.com”`
-注销URL“https:www.myapp.com/signout oidc”`
-回复“https:www.myapp.com/signin-oidc”`
-识别器“https://tenant.onmicrosoft.com/MyApp" `
-Oauth2AllowImplicitFlow$false`
-OAuth2Requiresponse$true

您可以使用Azure CLI使用az ad应用程序更新--set
来修改应用程序注册清单属性

下面是一个示例(我使用的是Powershell脚本格式): (这些命令用于禁用oauth2Permissions属性,但可以应用于清单中的大多数属性) 您必须先设置为禁用“oauth2Permissions”才能修改其中的任何属性

az ad app update --id $app_registration_id --set oauth2Permissions[0].isEnabled=false
然后您可以修改它(在我的情况下,我只想清除所有属性):


这个命令对我起了作用:

az ad app update --id <appid> --set oauth2AllowIdTokenImplicitFlow=false
az ad应用程序更新--id--设置oauth2AllowIdTokenImplicitFlow=false
奇怪的是,它抱怨找不到属性,但它确实工作了…

这设置了oauth2AllowImplicitFlow属性,而不是OAuth2AllowTokenImplicitFlow。我猜是第2步。也可以编写脚本,即
-RequiredResourceAccess
arg?@reim是的,但它只是添加了权限,而没有
授予管理员许可
。对于编程清单控制,现在可以使用Azure CLI工具,请参阅
az ad app update
az ad app update --id $app_registration_id --set oauth2Permissions=[]
az ad app update --id <appid> --set oauth2AllowIdTokenImplicitFlow=false