azure 如何在Python中使用MSAL获得ACCESS令牌?

mbskvtky  于 2023-03-24  发布在  Python
关注(0)|答案(2)|浏览(199)

我似乎无法弄清楚如何使用MSAL获取访问令牌。我花了时间阅读源代码和Microsoft文档,但无济于事。我想使用PublicClientApplication获取令牌。即使使用ConfidentialClientApplication运行QuickStart的概念证明,我似乎也只能获得ID_Token而不是访问令牌。最终,我试图构建桌面/移动的应用程序,并希望能够使用MSAL的id令牌索赔和访问令牌访问API。还值得一提的是,我想实现这一使用AAD B2C谢谢!

vhmi4jdf

vhmi4jdf1#

要获得访问权限,请使用PublicClientApplication类的acquire_token_silentacquire_token_interactive方法。
下面是一个例子,用你自己的变量替换所需的变量。

import msal

app = msal.PublicClientApplication(
    "your_client_id", 
    authority="https://yourtenant.b2clogin.com/yourtenant.onmicrosoft.com/B2C_1_signup_signin_policy",
    client_credential=None
)

scopes = ["https://yourtenant.onmicrosoft.com/api/read"]

result = app.acquire_token_interactive(scopes=scopes)

print(result["access_token"])
dddzy1tm

dddzy1tm2#

我在我的环境中复制并得到了如下预期结果,并遵循Microsoft-Document

from msal import ConfidentialClientApplication

cid = "53f3ed37d4aeac"
csecret = "AFK8MY-weud6cqP7jsvAJIojaq-"
tid = "72f981db47"
auth = f"https://login.microsoftonline.com/{tid}"

app = ConfidentialClientApplication(
    client_id=cid,
    client_credential=csecret,
    authority=auth
)
s = "https://graph.microsoft.com/.default"
result = app.acquire_token_for_client(scopes=s)
a = result.get("access_token")
print(a)

输出:

这里csecret是客户端机密
cid是客户端ID
tid是租户ID

相关问题