Gar*_*ght 2 python identity azure oauth-2.0 app-secret
我对使用Azure最近发布的用于秘密管理的新服务非常感兴趣.我已经找到了一些示例指南,介绍了如何通过powershell cmdlet和c#与密钥保管库进行交互,但是在开始使用其余API方面却没有找到太多帮助.
我特别困惑的是处理oauth2 w/active目录.我编写了一个oauth2应用程序监听器,用AD实例构建了一个Web应用程序,现在可以生成一个"access_token".我不清楚如何继续这样做,因为我似乎在尝试使用我的access_token执行密钥库API调用时始终收到401 HTTP resp代码.
任何有关使用蔚蓝钥匙保险库和python的指南/提示将不胜感激!
在下面的代码工作之前,您需要执行以下步骤...希望我能记住一切!
您需要在AD中拥有一个至少具有访问权限的应用程序
注意:你需要这个来获取CLIENT_ID和CLIENT_SECRET然后运行:
azure keyvault set-policy --vault-name'VAULTNAME' - spn CLIENT_ID --perms-to-secrets'["get"]'
您还需要使用id来获取您的秘密,您可以使用以下命令获取Azure CLI:
天蓝色的密钥保险秘密展[金库] [秘密]
要么
azure keyvault secret show -h#如果不清楚的话
复制密钥(URL中的最后一个参数)
然后,以下代码将允许您使用oauth2查询密钥保管库:
import json
import requests
AUTHORITY_HOST = "login.windows.net"
TENANT_ID = < your tenant id >
CLIENT_ID = < your client id >
CLIENT_SECRET = < your client secret >
VAULT = 'MyVault'
data = { "grant_type" : "client_credentials",
"client_id" : CLIENT_ID,
"client_secret" : CLIENT_SECRET,
"resource" : "https://vault.azure.net"
}
secrets = [( "i_like_pie", "8a7680a2cf5e4d539494aa0ce265297" )]
headers = { "Content-Type" : "application/x-www-form-urlencoded" }
r = requests.post("https://login.windows.net/{}/oauth2/token".format(TENANT_ID), data=data, headers=headers)
access_token = r.json()['access_token']
for secret, secret_id in secrets.iteritems():
headers = {"Authorization":"Bearer {}".format(access_token) }
r = requests.get('https://{}.vault.azure.net/secrets/{}/{}?api-version=2015-06-01'.format(VAULT, secret, secret_id), headers=headers)
print('##### {} #####'.format(secret))
print(r.json())
print('')
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4212 次 |
最近记录: |