为访客获取Azure AD令牌

时间:2019-04-26 12:38:44

标签: c# asp.net-mvc azure azure-active-directory

在我在Azure上注册的Web API应用程序中,我通过以下方式为Active Directory中的用户获取令牌:

    var result = await client.PostAsync(oauthEndpoint, new FormUrlEncodedContent(new[]
    {
        new KeyValuePair<string, string>("client_id", _azureOptions.ClientId),
        new KeyValuePair<string, string>("grant_type", "password"),
        new KeyValuePair<string, string>("username", userName),
        new KeyValuePair<string, string>("password", password),
        new KeyValuePair<string, string>("client_secret", _azureOptions.ClientSecret),
        new KeyValuePair<string, string>("client_info", "1"),
        new KeyValuePair<string, string>("scope",
                                    "openid offline_access profile api://xxxxxxx-xxxxxxxxx-xxxxxxxxxxx/access_as_user"),
                            })).ConfigureAwait(false);
...

我工作得很好。 我添加了一个gmail.com来宾帐户,现在出现错误

  

{“错误”:“ invalid_grant”,“错误描述”:“ AADSTS50034:用户   Microsoft.AzureAD.Telemetry.Diagnostics.PII帐户不存在   gmail.com目录。要登录此应用,该帐户   必须添加到目录中。\ r \ n跟踪ID:   c0a3f945-d446-430c-8e4e-fd77c95a5500 \ r \ n相关ID:   6cd071f3-b5b0-4ed2-98a2-292f45863e1a \ r \ n时间戳:2019-04-26   12:31:28Z“,” error_codes“:[50034],” timestamp“:” 2019-04-26   12:31:28Z“,” trace_id“:” c0a3f945-d446-430c-8e4e-fd77c95a5500“,” correlation_id“:” 6cd071f3-b5b0-4ed2-98a2-292f45863e1a“}

我该如何解决?如果我创建具有天蓝色身份验证的基本ASP.NET MVC Core应用程序,并将其重定向到microsoft页面,则该基本应用程序可与guest虚拟机一起使用。

但是在我的“静默身份验证”情况下,来宾用户无法正常工作

1 个答案:

答案 0 :(得分:1)

您不能对来宾使用ROPC流程(在此使用)。 它不适用于联合帐户。 使用MFA或密码过期的用户都无法使用。 我通常建议人们远离这种潮流。