Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何配置Azure应用程序注册和本机客户端,以支持使用通过设备代码流验证的MSA的来宾帐户?_Azure_Authentication_Azure Active Directory - Fatal编程技术网

如何配置Azure应用程序注册和本机客户端,以支持使用通过设备代码流验证的MSA的来宾帐户?

如何配置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:无

我有一个应用程序,目前正在对Azure active directory租户中的用户进行身份验证。我有使用MSAL的本机客户端,还有一个api作用域,用于获取用于ASP.NET Web api应用程序的令牌。我们还有一个使用web api端点的web前端。我们希望允许外部用户访问此应用程序。我向租户添加了个人Microsoft帐户(MSA),他们可以在SPA中使用MSAL.js向web前端进行身份验证。当这些来宾用户尝试使用设备代码流进行身份验证时,我收到错误:

消息:AADSTS16500:无效请求:请求未包含用户上下文所需的令牌。未提供一个或多个用户上下文值(cookies;表单字段;标题),每个请求必须包含这些值,并在完整的单个用户流中维护这些值。请求未返回所有表单字段。失败原因:[未提供令牌;]

租户上的普通用户成功地使用设备代码流进行身份验证

  • 权限为:租户id}
  • 为设备代码传递的作用域是api作用域:api://{my api id}/data.read
  • 在应用程序注册中,重定向URL设置为: 和 msal{some id}://auth
  • 为访问令牌和Id令牌启用隐式授权
  • 支持的帐户类型仅适用于单个租户
  • “允许公共客户端流”设置为“是”

如果我将权限更改为使用“common”而不是租户id,来宾用户可以进行身份验证,但是我从客户端获得的令牌使用的是Microsoft帐户租户9188040d-6c67-4c5b-b112-36a304b66dad,OID是针对该租户的,而不是我组织租户中来宾用户的OID

我以前回答过类似的问题。请参阅:错误的原因是令牌的错误颁发者。您需要以来宾用户身份登录并获取授权代码。我建议您使用身份验证代码流。我不确定是否理解您的建议。本机客户端位于输入受限设备上,需要使用此处所述的设备代码流。用户收到设备代码,然后在另一个设备上输入,然后提示用户输入其身份验证信息。用户输入他们的来宾用户登录信息,此时他们被重定向到一个页面,出现上述错误。