2015-07-07 20 views
0

У меня есть веб-сайт ASP.NET MVC 5 с интерфейсом, который аутентифицирует пользователей через AD FS 3.0 с использованием протокола WS-Federation. Пользователи регистрируются на странице входа в систему ACS, и все работает хорошо с этой целью.Приложение WebAPI с использованием OWIN и JWT

My backend - это приложение WebAPI, которое вызовет интерфейс. Они являются отдельными областями, но оба должны пройти аутентификацию на том же сервере AD FS. Разница заключается в том, что я хотел бы, чтобы проект WebAPI использовал токены JWT для аутентификации.

Вот WebAPI запуска:

var thumbprint = "** omitted on purpose for internet eyes... **"; 
certificateStore = new X509Store(StoreName.TrustedPeople, StoreLocation.LocalMachine); 
certificateStore.Open(OpenFlags.ReadOnly); 
var certificate = certificateStore.Certificates.Find(X509FindType.FindByThumbprint, thumbprint, false)[0]; 
certificateStore.Close(); 

var accessTokenFormat = new JwtFormat 
(
    // AllowedAudiences: 
    new[] { "urn:MySolution.WebAPI" }, 
    //IssuerSecurityTokenProviders: 
    new IIssuerSecurityTokenProvider[] 
    { 
     new X509CertificateSecurityTokenProvider("https://myAdfsServer.com/adfs/oauth2/", certificate) 
    } 
); 

app.UseOAuthAuthorizationServer(new OAuthAuthorizationServerOptions 
{ 
    AccessTokenFormat = accessTokenFormat 
}); 

app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions 
{ 
    AuthenticationMode = AuthenticationMode.Active,      
    AccessTokenFormat = accessTokenFormat 
}); 

Что я здесь отсутствует? Я готов много статей об этом, и каждый кажется близким, но просто что-то не хватает. Любая помощь чрезвычайно ценится.

EDIT 1: Из того, что я прочитал, JWT не является механизмом аутентификации. Итак, как мне аутентифицировать пользователей в моем WebAPI? В моем сценарии пользователи уже прошли аутентификацию во внешнем интерфейсе с использованием входа в ACS, однако бэкэнд вызывается интерфейсом, так что в этом случае не было бы входа в систему с помощью единого входа из AD FS?

ответ

1

OpenIdConnect предназначен для аутентификации пользователей. JwtFormat используется в основном для проверки доступа к AccessTokens с использованием OAuthFlows.

Посмотрите через эти образцы: https://github.com/AzureADSamples

Это может представлять особый интерес: https://github.com/AzureADSamples/WebAPI-ManuallyValidateJwt-DotNet

Смежные вопросы