获取用于FHIR的访问令牌OAuth2 Azure api-Python

问题描述 投票:0回答:1

我正在使用python将FHIR json插入用于FHIR的Azure API中。我已经将Azure api部署为服务,并且还进行了应用程序注册。

我的应用不是网络应用。它只是读取输入的json并将其发布到FHIR服务器。因此,我创建了Public / Mobile&Desktop应用程序。

通过邮递员,我能够成功地发布消息。但是,我想用我的python脚本做到这一点。我对通过OAuth2获取访问令牌感到震惊。

我尝试了以下代码,并抛出了空的房客id。当我用Google搜索OAuth2时,有多个软件包,例如rauth,ADAL,msal。他们都没有为我工作。

import requests
app_id = <client_id>
token_url = https://login.microsoftonline.com/<tenant_id>/oauth2/token

    token_data = {
    'resource': 'APP_ID_URL',
    'grant_type': 'password',
    'client_id': app_id,
    'client_secret': client_secret,
    'scope':'',
    'username':'USERNAME',  
    'password':'PASSWORD',

    }


我得到200响应,但是它返回一个HTML提示用户登录问题。是否有一种通过python脚本获取OAuth2令牌的简单方法。我检查了与此相关的其他SO帖子。大多数答案对我都不起作用。

python oauth-2.0 hl7-fhir fhir-server-for-azure
1个回答
1
投票

您正在寻找的是客户端凭据流,您可以在此处了解更多信息:https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-client-creds-grant-flow

对于用于FHIR的Azure API,您要成为服务客户端(https://docs.microsoft.com/en-us/azure/healthcare-apis/register-service-azure-ad-client-app),一旦拥有服务客户端,您需要将请求修改为类似(未经测试):

对于AAD端点的v2.0(推荐):

import requests
app_id = <client_id>
token_url = https://login.microsoftonline.com/<tenant_id>/oauth2/v2.0/token

    token_data = {
    'grant_type': 'client_credentials',
    'client_id': app_id,
    'client_secret': client_secret,
    'scope':'https://<yourfhirservice>.azurehealthcareapis.com/.default',
    }

对于v1.0(https://docs.microsoft.com/en-us/azure/active-directory/azuread-dev/v1-oauth2-client-creds-grant-flow),您可能可以执行以下操作:

import requests
app_id = <client_id>
token_url = https://login.microsoftonline.com/<tenant_id>/oauth2/token

    token_data = {
    'grant_type': 'client_credentials',
    'client_id': app_id,
    'client_secret': client_secret,
    'resource':'https://<yourfhirservice>.azurehealthcareapis.com',
    }
© www.soinside.com 2019 - 2024. All rights reserved.