如何解决Azure ADFS安装程序中的Power BI API令牌问题?

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

在我们设置联合的Azure AD(SSO)之前,代码运行良好。有关此链接的更多信息。https://blogs.msdn.microsoft.com/azuredev/2018/01/22/accessing-the-power-bi-apis-in-a-federated-azure-ad-setup/

源代码是用python开发的。

def token():

    username,password = login() #get login
    data = {
        'grant_type': 'password',
        'scope': 'openid',
        'resource': 'https://analysis.windows.net/powerbi/api',
        'client_id': '******',
        'username': username,
        'password': password
    }
    endpoint = 'https://login.microsoftonline.com/common/oauth2/token'
    r = requests.post(endpoint, data=data)
    data = r.json()
    access_token = data['access_token']
    headers = {'Content-Type': "application/json",
        'Authorization': 'Bearer ' +access_token}
    return headers

Error:
    access_token = data['access_token']
    KeyError: 'access_token'

有人遇到这个问题并解决了吗?

提前感谢

python api azure-active-directory powerbi adfs
1个回答
0
投票

默认情况下,此功能不起作用的原因是,Azure AD将阻止联合帐户的ROPC流。仅出于安全原因使用云帐户(onmicrosoft.com域)时,此流程才有效。如果您需要使用联合帐户进行身份验证,则最好使用ADAL库。我们在这里有一个ADAL Java库。 https://github.com/AzureAD/azure-activedirectory-library-for-java/wiki/Acquiring-Tokens-with-username-and-password

另外,请注意:

Microsoft建议您不要使用ROPC流。在大多数情况下,并建议使用更安全的替代方法。这个流程需要对应用程序的高度信任,并带有其他流程中没有的风险。你只能用这个无法使用其他更安全的流程时的流程。

参考:

https://github.com/MicrosoftDocs/azure-docs/issues/34108

© www.soinside.com 2019 - 2024. All rights reserved.