【问题标题】:Azure AD B2C with WebApi2- calling GraphAPI after authenticationAzure AD B2C with Web Api 2-在身份验证后调用 Graph API
【发布时间】:2019-05-02 17:39:15
【问题描述】:

我有一个 WebApi2 应用程序,它作为我的应用程序前端的 api 服务。现在我想使用 AD B2C 来管理我的用户 - 假设我想通过他们的角色(管理员或客户)来区分他们,为此我相应地创建了两个 b2c 用户组。当用户登录时,我想为具有不同角色(组)的用户显示不同的内容。

我在我的 WebApi2 项目中使用this example 来设置Startup.Auth.cs

var tvps = new TokenValidationParameters
{
    ValidAudience = clientId,
    AuthenticationType = signUpSignInPolicy,
};

app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions
{
    AccessTokenFormat = new JwtFormat(tvps, new OpenIdConnectCachingSecurityTokenProvider(String.Format(aadInstance, tenant, defaultPolicy))),
});

根据我所阅读的内容,b2c 目前不会在声明中返回用户的 grups。有人建议我在获取令牌后需要调用 GraphApi 来获取这些组并将它们添加到用户的声明中:

private static async Task<string> GetGroups(string token, string userId)
{
    using (var client = new HttpClient())
    {
        var requestUrl = $"https://graph.microsoft.com/v1.0/users/{userId}/memberOf?$select=displayName";
        var request = new HttpRequestMessage(HttpMethod.Get, requestUrl);
        request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", token);
        var response = await client.SendAsync(request);
        var responseString = await response.Content.ReadAsStringAsync();

        return responseString;
    }
}

这是我卡住的地方。如何注入我的代码以获取调用图的令牌?我搞砸了OAuthBearerAuthenticationOptions.Provider

Provider = new OAuthBearerAuthenticationProvider
{
    OnValidateIdentity = (context) =>
    {
        // var token = ??
        // var userId = <get from context's claims>
        // var groups = GetGroups(token, userId);
        // <add to claims>

        return Task.CompletedTask;
    }
},

...但我不知道如何获得令牌。也许从一开始就错了,我需要另一种方法?

【问题讨论】:

    标签: c# azure asp.net-web-api2 azure-ad-b2c


    【解决方案1】:

    客户的令牌不能用于调用 AADGraph/MSGraph API。要获得令牌以自动方式调用图形 API,我们需要仅应用程序访问。我们需要在租户中配置一个应用程序,其凭证用于获取令牌。然后,该令牌可用于调用 memberOF Api(或任何其他需要或需要用户信息的 API)

    这里是如何在 B2C 依赖服务中调用 AAD Graph api 的示例和说明。 https://docs.microsoft.com/en-us/azure/active-directory-b2c/active-directory-b2c-devquickstarts-graph-dotnet

    【讨论】:

      猜你喜欢
      • 2021-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-06
      • 1970-01-01
      • 2019-06-25
      • 1970-01-01
      相关资源
      最近更新 更多