我试图用更新的清单创建可访问Windows Azure AD的Azure AD应用。我已经能够成功创建/配置新的应用注册,但是在尝试配置清单时遇到问题。
我已经尝试使用示例代码,但要为我的MS(https://docs.microsoft.com/en-us/cli/azure/ad/app?view=azure-cli-latest#az-ad-app-create)提供一个已存在的App Registration中更新的'resourceAppId',但是bash会引发错误
az ad app create --display-name myTest --homepage https://blah.test.com --reply-urls https://blah.test.com/.auth/login/add/callback --required-resource-accesses @manifest.json("manifest.json" contains the following content)
[{"resourceAppId": "00000002-0000-0000-c000-000000000000",
"resourceAccess": [
{
"id": "a42657d6-7f20-40e3-b6f0-cee03008a62a-test",
"type": "Scope"
}
]
}]
当我复制了示例代码并刚刚更新了一些参数时,我希望它可以运行。 TIA提出任何建议
这是我通过门户网站运行时收到的错误
答案 0 :(得分:1)
由于您提供的有用信息太少,所以我不确定您遇到了什么错误。
我已经测试了您的脚本,但下面出现错误。
az ad app create --display-name 'myTest' --homepage 'https://blah.test.com --reply-urls https://blah.test.com/.auth/login/add/callback' --required-resource-accesses 'C:\Users\joyw\Desktop\manifest.json'
az : ERROR: '--identifier-uris' is required for creating an application
At line:1 char:1
+ az ad app create --display-name 'myTest' --homepage 'https://blah.tes ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (ERROR: '--ident... an application:String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
如果您也遇到此错误,只需添加--identifier-uris 'https://mytestapp.websites.net'
之类的参数,完整的命令将类似于:
az ad app create --display-name 'myTest' --homepage 'https://blah.test.com' --reply-urls 'https://blah.test.com/.auth/login/add/callback' --identifier-uris 'https://mytestapp.websites.net' --required-resource-accesses 'C:\Users\joyw\Desktop\manifest.json'
然后它将正常工作。
据我了解,您可能会认为resourceAppId
中的manifest.json
有问题。如果未收到上述错误,则可以按照以下信息进行故障排除,并确保在manifest.json
中使用正确的属性。
我的manifest.json
文件:
[{
"resourceAppId": "69ae001f-xxxxxxxx-375585ac983e",
"resourceAccess": [
{
"id": "6833b2c6-9954-43e1-ac46-f54a26a3b693",
"type": "Scope"
},
{
"id": "1b4f816e-5eaf-48b9-8613-7923830595ad",
"type": "Role"
}
]
}]
resourceAppId
是服务主体的应用程序ID(即AD App的应用程序ID),因此您是正确的。
在resourceAccess
中,type
是Scope
或Role
。 Scope
代表委派的权限,Role
代表应用程序许可。对于应用程序权限,可以在正在使用的AD App清单的appRoles
中找到它(对于我的示例是应用程序69ae001f-xxxxxxxx-375585ac983e
)。对于委派的权限,您可以在清单中的oauth2Permissions
中找到它。然后将id
放在相应的位置。
将其与我的示例AD App清单一起检查,注意id
和对应关系,将很清楚。
appRoles:
"appRoles": [
{
"allowedMemberTypes": [
"Application"
],
"displayName": "SurveyCreator",
"id": "1b4f816e-5eaf-48b9-8613-7923830595ad",
"isEnabled": true,
"description": "Creators can create Surveys",
"value": "SurveyCreator"
}
]
oauth2权限:
"oauth2Permissions": [
{
"adminConsentDescription": "Allow the application to access joywebtest on behalf of the signed-in user.",
"adminConsentDisplayName": "Access joywebtest",
"id": "6833b2c6-9954-43e1-ac46-f54a26a3b693",
"isEnabled": true,
"type": "User",
"userConsentDescription": "Allow the application to access joywebtest on your behalf.",
"userConsentDisplayName": "Access joywebtest",
"value": "user_impersonation"
}
]
最后,我们可以检查刚刚在门户中创建的AD App。它将具有我们设置的所需权限。
有关更多详细信息,您还可以查看Azure Active Directory app manifest。