Я пытаюсь реализовать API-интерфейс Azure AD Graph в веб-приложении MVC, размещенном на Azure. Azure AD настроен правильно, поскольку я смог использовать Graph API в прошлом году в предыдущей версии, прежде чем он обновился в какой-то момент в конце прошлого года/в этом году.Azure AD Graph API и WsFederation Authentication
Я следую инструкциям здесь https://github.com/AzureADSamples/WebApp-GraphAPI-DotNet и используя обновленный код. Разница между этими двумя проектами заключается в том, что я использую WsFed, а не OpenID, поэтому некоторые части разные, а именно Startup.Auth.cs. Вот соответствующий код в данном примере проекта (видел here):
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. Ни один из них не дает хороший вариант для кода доступа или всего, что я могу использовать для запроса API Графа позже в моем приложении. Как мне это сделать? Любое руководство будет высоко оценено.