У меня есть приложение WebApi2, которое использует серверы как интерфейс API для моего интерфейса приложения.Теперь я хочу использовать AD B2C для управления моими пользователями - скажем, я хочу дифференцировать их по ролям (администратор или клиент), и для этого я создал две группы пользователей b2c соответственно.Когда пользователь входит в систему, я хочу отображать разные вещи для пользователей с разными ролями (группами).
Я использую этот пример для настройки Startup.Auth.cs
в моем проекте WebApi2:
var tvps = new TokenValidationParameters
{
ValidAudience = clientId,
AuthenticationType = signUpSignInPolicy,
};
app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions
{
AccessTokenFormat = new JwtFormat(tvps, new OpenIdConnectCachingSecurityTokenProvider(String.Format(aadInstance, tenant, defaultPolicy))),
});
Из того, что я прочитал, b2c не возвращает групповые сообщения пользователяпретензии на данный момент.Некоторые люди предложили мне вызвать 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;
}
},
... но я не знаю, как получить токен.Может быть, это неправильно с самого начала, и мне нужен другой подход?