【问题标题】:When calling microsoft graph api, I get exception AADB2C90086: The supplied grant_type [client_credentials] is not supported调用 microsoft graph api 时,出现异常 AADB2C90086:不支持提供的 grant_type [client_credentials]
【发布时间】:2021-04-14 14:38:34
【问题描述】:

我正在尝试从我的 AD B2C 目录中删除一个用户,如下所示:

public static async Task<bool> DeleteUserAsync2(string userId)
{
    var clientapp = ConfidentialClientApplicationBuilder.Create(Globals.ClientId)
        .WithClientSecret(Globals.ClientSecret)
        .WithRedirectUri(Globals.RedirectUri)
        .WithB2CAuthority(Globals.B2CAuthority)
        .Build();

    ClientCredentialProvider authProvider = new ClientCredentialProvider(clientapp);

    var graphClient = new GraphServiceClient(authProvider);

    try
    {
        await graphClient.Users[userId]
            .Request()
            .DeleteAsync();
        return true;
    }
    catch (Exception ex)
    {
        return false;
    }
}

不知道为什么我会收到此不受支持的错误,因为这与我的代码在我的应用程序中登录或注册用户时使用的类似。

【问题讨论】:

  • grant_type = client_credential 流仅在应用程序尝试向 AAD 进行身份验证并尝试从 AAD 为自己获取令牌时使用。当用户尝试对自己进行身份验证并尝试从 AAD 获取令牌时,您必须使用 OAuth 的授权代码授予流程。你可以找到more details about this flow

标签: asp.net azure-active-directory microsoft-graph-api azure-ad-b2c


【解决方案1】:

由于 Azure AD B2C 不支持客户端凭据流,因此在使用 Azure AD B2C 时,我们必须使用用户登录。 Client credential flow 可用于 Azure AD

Azure AD B2C 支持authorization code flowimplicit flow

代码示例:https://docs.microsoft.com/en-us/azure/active-directory-b2c/code-samples#single-page-apps

【讨论】:

  • 感谢帕梅拉。虽然我有你在这里,但我找不到任何 API 来为单个用户强制/启用/禁用 MFA 设置。这真的不存在吗?
  • “强制/启用/禁用 MFA 设置”是什么意思?有 Microsoft Graph API operations 支持管理 Azure AD B2C 资源。还有关于 Asp.Net MVC 的代码示例here.
  • 我的意思是为特定用户或一组用户强制/启用 MFA 的能力。 Portal 允许我们通过 UI 执行此操作,但没有 API
  • 我正在使用相同的 MVC 示例,但我希望能够使用客户端凭据流使用 API 更新/删除用户,因为我希望应用能够代表系统执行此操作行政。所以我不认为身份验证代码流对我有用。
  • 您可以使用ropc flow。不完全支持客户端凭据流。并且没有启用MFA的API,user flow and custom policy都可以使用。
猜你喜欢
  • 2017-07-14
  • 2020-05-07
  • 2017-11-14
  • 1970-01-01
  • 1970-01-01
  • 2020-05-26
  • 1970-01-01
  • 1970-01-01
  • 2017-09-10
相关资源
最近更新 更多