Я пытаюсь написать .netcore API, который получает токен на предъявителя от стороннего Webapp.Этот API .netcore должен обращаться к API графа Microsoft и получать информацию о группе пользователей из Azure AD.
Я следил за примером проекта https://github.com/Azure-Samples/active-directory-dotnet-webapp-webapi-openidconnect-aspnetcore.
Но, к сожалению, для этого используется граф AAD, а неMicrosoft graph API.
В приведенном выше примере я попытался реализовать Graph API в проекте api .netcore.
То, что я пробовал
Iизменил график AAD на Graph API в AzureAdAuthenticationBuilderExtensions.cs (в проекте веб-приложения)
options.Resource = "https://graph.microsoft.com";
Также в проекте API я использовал нюгет Microsoft.Graph.И я пытаюсь создать GraphServiceClient, используя код ниже
public GraphServiceClient GetClient(string accessToken, IHttpProvider provider = null)
{
var words = accessToken.Split(' ');
var token = words[1];
var delegateAuthProvider = new DelegateAuthenticationProvider((requestMessage) =>
{
requestMessage.Headers.Authorization = new AuthenticationHeaderValue("bearer", token);
return Task.FromResult(0);
});
var graphClient = new GraphServiceClient(delegateAuthProvider, provider ?? new HttpProvider());
return graphClient;
}
И, наконец, я пытаюсь получить доступ к информации о пользователе, используя код ниже,
public async Task<IEnumerable<Group>> GetGroupAsync(string accessToken)
{
var graphClient = GetClient(accessToken);
try
{
User me = await graphClient.Me.Request().GetAsync();
}
catch (Exception e)
{
Console.WriteLine(e);
throw;
}
var user= await graphClient.Users["***"].Request().Expand("MemberOf").GetAsync();
var userEmail = "testemail@test.com";
var usergroup = await graphClient.Users[userEmail].GetMemberGroups(false).Request().PostAsync();
var groupList = new List<Group>();
foreach (var g in usergroup.CurrentPage)
{
var groupObject = await graphClient.Groups[g].Request().GetAsync();
groupList.Add(groupObject);
}
return groupList;
}
Но когда я пытаюсьcode Я получаю сообщение об ошибке "Microsoft.Graph.ServiceException: Code: InvalidAuthenticationToken Сообщение: ошибка проверки маркера доступа. Внутренняя ошибка в Microsoft.Graph.HttpProvider."
Может кто-нибудь мне помочь, пожалуйста?
Заранее спасибо