Представьте клиентское и сервисное приложение, зарегистрированное в Windows Azure.Как я могу выполнить автоматическую аутентификацию oauth/openid для WebAPI?
Клиент является консолью и работает без присмотра на месте (например, выполняет тесты за ночь) Услуга является сервисом WebAPI, защищенным oAuth и обычно доступным с использованием OpenID Connect, размещенного в Azure.
Как клиент может аутентифицироваться в службе БЕЗ любого взаимодействия входа пользователя (т. Е. Приложение аутентифицируется для службы с использованием ADAL .Net)?
Я попытался ADAL .Net Daemon to WebAPI sample, но она по-прежнему всплывает диалог аутентификации ...
Спасибо!
[редактировать] Вот код, чтобы показать очень примерно, как я общаюсь с клиентом. Все идентификаторы приложений и т. Д. Являются правильными.
var authContext = new AuthenticationContext("https://login.windows.net/common");
var result = await authContext.AcquireTokenAsync(ServiceAppId, ClientCredential);
var client = new HttpClient
{
BaseAddress = new Uri("https://localhost:44301/"),
};
client.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue(
AuthenticationHeaderScheme.Bearer,
result.AccessToken);
var response = await client.GetAsync("api/something");
var jsonString = response.Content.ReadAsStringAsync().Result;
Это просто производит логин страницу HTML ...
Я также попытался добавить [HostAuthentication("OAuth2Bearer")]
т.д. в контроллер API службы и добавления в логике запуска Owin, но безрезультатно, например:
app.UseWindowsAzureActiveDirectoryBearerAuthentication(
new WindowsAzureActiveDirectoryBearerAuthenticationOptions
{
TokenValidationParameters = new TokenValidationParameters
{
ValidAudience = myRealm,
},
Tenant = "mytenant.onmicrosoft.com",
AuthenticationType = BearerAuthenticationType.OAuth2Bearer,
});
Что вы используете как свою AS? Azure AD? – BenV
Azure AD, да. Все работает отлично от этого сценария. – Richard
[Этот парень] (http://stackoverflow.com/questions/25781752/failing-to-authenticate-using-token-acquired-with-adal) также опубликовал тот же вопрос немного после моего. От очистки Interwebs, кажется, часто встречающаяся проблема, но я не могу найти окончательного ответа. – Richard