【发布时间】:2023-04-08 20:43:01
【问题描述】:
我正在尝试为非微软用户无提示获取访问令牌。
它在提示下对我有用:
authenticationContext.AcquireToken(resource, clientId, new Uri(uri), PromptBehavior.Always);
但没有提示,它不起作用。我尝试了以下两种方法:
-
var authContext = new AuthenticationContext(Authority); var userCredential = new UserCredential(username, password); var token = authContext.AcquireToken(resource, clientId, userCredential);ActiveDirectory v3 异常:访问 WS 元数据交换失败。
ActiveDirectory v2:序列不包含任何元素。
-
new HttpRequestMessage(HttpMethod.Post, "https://login.microsoftonline.com/<tenantId>/oauth2/token");与:
$"grant_type=password&resource={resource}&client_id= {clientId}&username={userName}&password={password}"错误描述:“AADSTS50034:要登录此应用程序,必须将帐户添加到 tenantId 目录。
我使用的用户在我尝试登录的租户中,并且它使用提示符。 我想知道为什么它不适用于其他两种方式。
谢谢
【问题讨论】:
-
“非微软”用户是什么意思?你想通过没有提示来完成什么?
-
例如:xxx@outlook.com。对于像 xxx@microsoft.com 这样的 Microsoft 用户,它可以工作。 (他们都在同一个租户中)。我想动态传递用户凭据(无用户操作)
-
如何将 xxx@outlook.com 添加到租户中?作为访客帐户?或外部帐户?您使用的是由 Azure 门户创建的标准 AAD 应用程序吗?
-
访客帐号。是的 - Azure 门户创建的标准 AAD 应用程序