在Azure中使用代码授权流进行oauth2.0身份验证

sr4lhrrt  于 2023-10-22  发布在  其他
关注(0)|答案(1)|浏览(105)

我有以下要求:我有一个带有简单表格的powerbi报告。表中的一列是image。powerbi用户应该能够点击图片栏中的按钮,然后它应该在Web浏览器中显示图像(或任何其他他们可以看到显示图像的位置)。用户应该无法下载图像。
图像存储在ADLS中,图像的文件路径可以在pbi中动态生成。我尝试的第一个选项是将SAS令牌添加到URL,然后检索图像。这个选项工作正常,但问题是,任何可以访问SAS令牌的人都可以访问被标记为不安全的完整ADLS。
我一直在探索的另一种选择是创建一个功能应用程序,它首先要求用户进行身份验证,并在成功后返回图像。有没有人知道是否可以通过向函数应用程序发送一个http请求来完成这一点?
提前感谢!

qlzsbp2j

qlzsbp2j1#

或者,您可以使用我在我的环境中复制的客户端凭据流,下面是我的预期结果:
对于OAuth2.0身份验证,您需要客户端密钥客户端ID和租户ID,通过它们您可以获取令牌,一旦获得令牌,可以像下面这样访问函数:
要获取以下凭据,您需要在应用程序注册中创建一个应用程序:

__init__.py :

import os
import azure.functions as func
from msal import ConfidentialClientApplication

# Azure AD settings
tenantid2 = "72f988bf"
clientid2 = "74230c16"
clientsecret2 = "IGj8Q~Iff"
rithscope = "https://analysis.windows.net/powerbi/api/.default" 

def get_token_rith():
    authority = f"https://login.microsoftonline.com/{tenantid2}"
    app = ConfidentialClientApplication(
        clientid2,
        authority=authority,
        client_credential=clientsecret2
    )
    token_response = app.acquire_token_for_client(scopes=[rithscope])
    return token_response['access_token']

def main(req: func.HttpRequest) -> func.HttpResponse:
    access_token1 = get_token_rith()
    return func.HttpResponse(f"Hello Rithwik, Authentication Successfull: {access_token1}")

requirements.txt:

Output:

相关问题