从api管理中获取Azure Key保管库中的秘密?

时间:2018-07-16 18:36:44

标签: azure azure-active-directory azure-api-management

我已经在Azure中创建了一个保管库,并授予其对API管理(在AAD中注册的应用程序)的访问权限。我试图在进行API调用时不将任何密码存储在标头中,而是从密钥库中获取密码。有没有办法做到这一点?如果是,怎么办?

过去几天没找到东西

谢谢

2 个答案:

答案 0 :(得分:4)

您需要使用API​​管理策略来完成工作(https://docs.microsoft.com/en-us/azure/api-management/api-management-policies)。

需要构造该策略以将HTTP请求发布到Azure AD OAuth终结点以接收访问令牌(https://docs.microsoft.com/en-us/azure/api-management/api-management-transformation-policies#TransformationPolicies)。使用访问令牌,您只需调用Key Vault API并检索机密(https://docs.microsoft.com/en-us/azure/api-management/api-management-advanced-policies#SendRequest)。该秘密将在您的标头(set-header)中传递

获取访问令牌的示例:https://docs.microsoft.com/en-us/azure/api-management/policies/use-oauth2-for-authorization?toc=api-management/toc.json

答案 1 :(得分:0)

这是Azure API管理和Azure Key Vault的端到端示例,包括如何在Azure AD中设置授权,以便APIM可以从Key Vault中读取机密,证书等。

https://github.com/kevinhillinger/azure-api-management-keyvault

集成要求在Key Vault实例所属的订阅的Azure AD租户中注册服务主体。然后,我们将授权它与密钥库进行对话。

在提供的示例中,我正在检索证书,因为这是更“困难”的选项。

以下是Azure Key Vault集成的流程:

  1. 从Azure AD获取铸造的令牌(载体)(确保为Key Vault正确设置范围)
  2. 获取响应并设置带有令牌值的变量
  3. 使用已加载令牌的授权标头向Key Vault发送请求
  4. 获取证书信息
  5. 在base64中提取整个PFX文件