gpt4 book ai didi

c# - 使用 AcquireTokenByUsernamePassword 方法为联合用户获取图形 api token

转载 作者:行者123 更新时间:2023-11-30 21:28:50 24 4
gpt4 key购买 nike

我尝试使用 ROPC 以及客户端提供的用户名和密码获取 token 。但错误消息是“parsing_wstrust_response_failed”。与描述的错误消息(最后一个错误)相同 here

根据此错误消息,我了解到我的用户是联合用户,无法使用此方法。有没有其他方法可以使用用户名和密码为联合用户获取 token ?

try
{
result = await app.AcquireTokenByUsernamePassword(scopes,
"<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="5b31343e1b3834352f34283475383436" rel="noreferrer noopener nofollow">[email protected]</a>",
securePassword)
.ExecuteAsync();
}
catch (MsalClientException ex) when (ex.ErrorCode=="parsing_wstrust_response_failed"){
}

最佳答案

首先,警告:您确实不应该在应用中使用用户名/密码。一般来说,它的安全性较低,并且会增加您暴露相关环境的风险。这也是一种脆弱的方法,因为您可能会发现 Azure AD 在将来的某个时间需要交互式登录 - 可能是在您非常不方便的时间。

其次,澄清一下:AcquireTokenByUsernamePassword 并不总是使用资源所有者密码凭据 (ROPC) OAuth 2.0 流程。当 MSAL 发现用户是联合域名的一部分时,如果联合身份提供程序发布了包含支持此方法的终结点的元数据交换文档,则库将尝试非交互式用户名/密码身份验证 。如果此请求成功,MSAL 将尝试将响应(由联合身份提供商颁发)交换为 Azure AD 中的普通 token 集(由 Azure AD 颁发)。

所以,回答你的问题:这取决于情况。 可以与联合用户一起使用AcquireTokenByUsernamePassword。但是,它要求联合身份服务支持这一点。 AD FS,即the most common IdP 与 Azure AD 联合,支持“usernamemixed”端点。

关于c# - 使用 AcquireTokenByUsernamePassword 方法为联合用户获取图形 api token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56000435/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com