У меня есть webapi, который зарегистрирован в Azure AD.который имеет код ниже в Startup.Auth.cs
public void ConfigureAuth(IAppBuilder app)
{
app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
app.UseCookieAuthentication(new CookieAuthenticationOptions());
app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
{
ClientId = ClientId,
Authority = Authority,
PostLogoutRedirectUri = PostLogoutRedirectUri
});
Когда я запускаю этот webapi в браузере, он запрашивает логин и после успешного входа в систему может видеть URL всех API.
I 'Я пытаюсь получить доступ к этому защищенному API из веб-приложения, которое зарегистрировано в том же Azure AD.
Когда я использую AcquireTokenAsync
в Webapp для генерации токена доступа для этого webapi, он работает, но в качестве ответа дает html-страницу входа в систему.
Чтобы избежать этого, я попытался сгенерировать токен без вывода сообщений, используя AcquireTokenSilentAsync
но возникает исключение unable to generate token cache not found
, но ключ кеша все еще обнаруживает исключение.
После того, как в каком-то посте git google предложили использовать UseWindowsAzureActiveDirectoryBearerAuthentication
этот код в WebApi, и они сказали, что он вернет вывод api при вызове из webapp вместо входа в системувывод страницы, но она не работает.
app.UseWindowsAzureActiveDirectoryBearerAuthentication(
new WindowsAzureActiveDirectoryBearerAuthenticationOptions
{
Audience = ConfigurationManager.AppSettings["ida:Audience"],
Tenant = ConfigurationManager.AppSettings["ida:Tenant"],
TokenValidationParameters = new System.IdentityModel.Tokens.TokenValidationParameters
{
ValidateIssuer = false
}
});