Я пытаюсь реализовать API-интерфейс Azure AD Graph в веб-приложении MVC, размещенном в Azure. Azure AD настроен правильно, так как я смог использовать Graph API в прошлом году в предыдущей версии, прежде чем он был обновлен в какой-то момент в конце прошлого года/в этом году.
Я следую инструкциям здесь https://github.com/AzureADSamples/WebApp-GraphAPI-DotNet и используя обновленный код. Разница между этими двумя проектами в том, что я использую WsFed, а не OpenID, поэтому некоторые части отличаются, а именно Startup.Auth.cs. Вот соответствующий код в этом примере проекта (см. ">здесь):
Notifications = new OpenIdConnectAuthenticationNotifications()
{
AuthorizationCodeReceived = (context) =>
{
var code = context.Code;
ClientCredential credential = new ClientCredential(clientId, appKey);
string userObjectID = context.AuthenticationTicket.Identity.FindFirst(
"http://schemas.microsoft.com/identity/claims/objectidentifier").Value;
AuthenticationContext authContext = new AuthenticationContext(Authority, new NaiveSessionCache(userObjectID));
AuthenticationResult result = authContext.AcquireTokenByAuthorizationCode(
code, new Uri(HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Path)), credential, graphResourceId);
AuthenticationHelper.token = result.AccessToken;
return Task.FromResult(0);
}
}
Однако, поскольку на моем веб-сайте установлено, что вы должны войти в систему через WS-Fed, чтобы вообще получить доступ к чему-либо на сайте, я пытаюсь получить токен в Startup.Auth.cs. так что я могу просто использовать AcquireTokenSilent позже. Я использую проект здесь https://github.com/AzureADSamples/WebApp-WSFederation-DotNet для настройки WS-Fed.
Проблема в Startup. Auth.cs заключается в том, что у меня нет доступа к параметру AuthorizationCodeReceived, только SecurityTokenReceived и SecurityTokenValidated. Ни один из них не дает хорошего варианта для кода доступа или чего-либо, что я могу использовать для запроса Graph API позже в моем приложении. Как мне это сделать? Мы будем очень признательны за любые рекомендации.