Azure REST api安全性
我正在API管理服务中搜索特定API的AAD用户智能角色/策略等功能 AWS提供基于规则的访问控制。例如,我们可以使用角色/策略将特定api(api网关的)访问权分配给特定IAM用户 Azure是否提供这样的服务? 例如,我在Azure api管理服务中添加了20个api(5个GET+5个POST+5个PUT+5个DELETE)。Azure REST api安全性,azure,Azure,我正在API管理服务中搜索特定API的AAD用户智能角色/策略等功能 AWS提供基于规则的访问控制。例如,我们可以使用角色/策略将特定api(api网关的)访问权分配给特定IAM用户 Azure是否提供这样的服务? 例如,我在Azure api管理服务中添加了20个api(5个GET+5个POST+5个PUT+5个DELETE)。 我可以为特定用户分配特定方法(例如GET)api访问权限吗?实现这一点的一个选项(无代码,仅配置)是使用Azure Active Directory(AAD)应用程序
我可以为特定用户分配特定方法(例如GET)api访问权限吗?实现这一点的一个选项(无代码,仅配置)是使用Azure Active Directory(AAD)应用程序角色 首先,您需要创建一个代表Web API的AAD应用程序。转到AAD>应用程序注册,并在那里注册Web应用程序/Web API。然后编辑其清单以添加角色,即:
"appRoles": [
{
"allowedMemberTypes": [
"Application",
"User"
],
"displayName": "Allow HTTP GET",
"id": "9cc5ee71-3d7d-4060-8b7f-e734f3917e71",
"isEnabled": true,
"description": "Allow HTTP GET requests",
"value": "AllowGET"
}
],
您可以为API具有的不同方法添加不同的角色
然后转到AAD>企业应用程序,找到刚刚创建的应用程序,然后:
- 在属性中,选择“需要用户分配”>是
- 在“用户和组”中,添加要允许访问之前创建的角色的用户(“允许HTTP Get”)
实现这一点的一个选项(无需代码,只需配置)是使用Azure Active Directory(AAD)应用程序角色 首先,您需要创建一个代表您的Web API的AAD应用程序。转到AAD>应用程序注册并在那里注册一个Web应用程序/Web API。然后编辑其清单以添加角色,即:
"appRoles": [
{
"allowedMemberTypes": [
"Application",
"User"
],
"displayName": "Allow HTTP GET",
"id": "9cc5ee71-3d7d-4060-8b7f-e734f3917e71",
"isEnabled": true,
"description": "Allow HTTP GET requests",
"value": "AllowGET"
}
],
您可以为API具有的不同方法添加不同的角色
然后转到AAD>企业应用程序,找到刚刚创建的应用程序,然后:
- 在属性中,选择“需要用户分配”>是
- 在“用户和组”中,添加要允许访问之前创建的角色的用户(“允许HTTP Get”)
add-type -path "Microsoft.IdentityModel.Clients.ActiveDirectory.dll"
$clientId = "NATIVE APPLICATION AAD AAP ID"
$redirectUri = "http://NATIVE APPLICATION AAD REDIRECT URI"
$resourceAppIdURI = "WEB API APP ID"
$authority = "https://login.windows.net/TENANT.onmicrosoft.com"
$authContext = New-Object "Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext" -ArgumentList $authority,$false
$promptBehavior=new-object Microsoft.IdentityModel.Clients.ActiveDirectory.PlatformParameters([Microsoft.IdentityModel.Clients.ActiveDirectory.PromptBehavior]::Always)
$userId = [Microsoft.IdentityModel.Clients.ActiveDirectory.UserIdentifier]::AnyUser
$authResult = $authContext.AcquireTokenAsync($resourceAppIdURI, $clientId, $redirectUri, $promptBehavior, $userId, $extraQueryParameters)
$authHeader = @{
'Accept'='application/json'
'Content-Type'='application/json'
'Authorization'=$authResult.result.CreateAuthorizationHeader()
'Ocp-Apim-Subscription-Key'='APIM SUBSCRIPTION KEY'
'Ocp-Apim-Trace'='true'
}
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Invoke-RestMethod -Uri "https://yourapimanager.azure-api.net/posts" -Headers $authHeader -Method Get -Verbose