如何配置Azure应用程序注册和本机客户端,以支持使用通过设备代码流验证的MSA的来宾帐户?
我有一个应用程序,目前正在对Azure active directory租户中的用户进行身份验证。我有使用MSAL的本机客户端,还有一个api作用域,用于获取用于ASP.NET Web api应用程序的令牌。我们还有一个使用web api端点的web前端。我们希望允许外部用户访问此应用程序。我向租户添加了个人Microsoft帐户(MSA),他们可以在SPA中使用MSAL.js向web前端进行身份验证。当这些来宾用户尝试使用设备代码流进行身份验证时,我收到错误: 消息:AADSTS16500:无效请求:请求未包含用户上下文所需的令牌。未提供一个或多个用户上下文值(cookies;表单字段;标题),每个请求必须包含这些值,并在完整的单个用户流中维护这些值。请求未返回所有表单字段。失败原因:[未提供令牌;] 租户上的普通用户成功地使用设备代码流进行身份验证如何配置Azure应用程序注册和本机客户端,以支持使用通过设备代码流验证的MSA的来宾帐户?,azure,authentication,azure-active-directory,Azure,Authentication,Azure Active Directory,我有一个应用程序,目前正在对Azure active directory租户中的用户进行身份验证。我有使用MSAL的本机客户端,还有一个api作用域,用于获取用于ASP.NET Web api应用程序的令牌。我们还有一个使用web api端点的web前端。我们希望允许外部用户访问此应用程序。我向租户添加了个人Microsoft帐户(MSA),他们可以在SPA中使用MSAL.js向web前端进行身份验证。当这些来宾用户尝试使用设备代码流进行身份验证时,我收到错误: 消息:AADSTS16500:无
- 权限为:租户id}
- 为设备代码传递的作用域是api作用域:api://{my api id}/data.read
- 在应用程序注册中,重定向URL设置为: 和 msal{some id}://auth
- 为访问令牌和Id令牌启用隐式授权
- 支持的帐户类型仅适用于单个租户
- “允许公共客户端流”设置为“是”
如果我将权限更改为使用“common”而不是租户id,来宾用户可以进行身份验证,但是我从客户端获得的令牌使用的是Microsoft帐户租户9188040d-6c67-4c5b-b112-36a304b66dad,OID是针对该租户的,而不是我组织租户中来宾用户的OID我以前回答过类似的问题。请参阅:错误的原因是令牌的错误颁发者。您需要以来宾用户身份登录并获取授权代码。我建议您使用身份验证代码流。我不确定是否理解您的建议。本机客户端位于输入受限设备上,需要使用此处所述的设备代码流。用户收到设备代码,然后在另一个设备上输入,然后提示用户输入其身份验证信息。用户输入他们的来宾用户登录信息,此时他们被重定向到一个页面,出现上述错误。