Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure REST api安全性_Azure - Fatal编程技术网

Azure REST api安全性

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)应用程序

我正在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)应用程序角色

首先,您需要创建一个代表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”)
现在转到API管理服务>API>查找您的API/方法,并编辑入站处理。在“代码视图”下添加一个策略以验证AAD令牌(确保配置您的AAD租户名称并配置作为Web API应用程序ID的访问群体GUID(您在开始时在AAD中注册的应用程序ID)):


实现这一点的一个选项(无需代码,只需配置)是使用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”)
现在转到API管理服务>API>查找您的API/方法并编辑入站处理。在代码视图下,添加一个策略以验证AAD令牌(确保配置您的AAD租户名称并配置作为Web API应用程序ID的访问群体GUID)(您最初在AAD注册的文件):

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