使用用户名和密码进行验证时如何获取 ID 令牌?
Posted
技术标签:
【中文标题】使用用户名和密码进行验证时如何获取 ID 令牌?【英文标题】:How Can I get an ID Token while validating using Username and Password? 【发布时间】:2020-02-01 04:37:13 【问题描述】:我正在使用 Python ADAL 库对使用 Azure Active Directory 的用户进行身份验证。我成功收到访问令牌后身份验证。现在,我想验证访问令牌的有效性。在这种情况下,我需要 ID_TOKEN。如何获得?
import adal
auth_context = adal.AuthenticationContext("https://login.microsoftonline.com/tenant_id")
token_response = auth_context.acquire_token_with_username_password("https://management.core.windows.net/", username, password, client_id)
在令牌响应中,我得到了 access_token 和 refresh_token,但没有收到 id_token。在一个类似的问题之后,How to verify JWT id_token produced by MS Azure AD? 我使用代码来验证访问令牌,但我需要 ID_TOKEN。
任何关于获得这个的想法都会很棒。
【问题讨论】:
【参考方案1】:不用ID_TOKEN
,试试下面的代码。
import adal
import jwt
auth_context = adal.AuthenticationContext("https://login.microsoftonline.com/tenant_id")
token_response = auth_context.acquire_token_with_username_password("https://management.core.windows.net/", username, password, client_id)
token_header = jwt.get_unverified_header(token_response['accessToken'])
更多详情,你可以参考这个类似的issue和这个doc。
【讨论】:
我试过这个。它确实有效,但是即使我向令牌添加了一些随机值,它仍然会将这些标头发回给我。发生这种情况的任何原因? @RoshanJoeVincent 你做得怎么样?也许是这个问题?***.com/questions/57869775/…以上是关于使用用户名和密码进行验证时如何获取 ID 令牌?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 identityserver4 中没有用户名和密码的情况下从令牌端点获取令牌?