Все,ASP.NET Идентичность 2,0 Аутентифицировать против нашего однонаправленного сервера
У меня есть сервер безопасности, которая единственная цель заключается в предоставлении на предъявителя лексем из одной конечной точки: запроса http://example.com/token
Пример:
POST http://example.com/token HTTP/1.1
User-Agent: Fiddler
Content-Type: x-www-form-urlencoded
Host: example.com
Content-Length: 73
grant_type=password&[email protected]&password=examplePassword
Пример ответа:
HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Type: application/json;charset=UTF-8
Expires: -1
Server: Microsoft-IIS/10.0
X-Powered-By: ASP.NET
Date: Tue, 16 Aug 2016 12:04:39 GMT
{
"access_token": "xxxx",
"token_type": "bearer",
"expires_in": 17999,
"refresh_token": "xxxx",
".issued": "Tue, 16 Aug 2016 12:04:38 GMT",
".expires": "Tue, 16 Aug 2016 17:04:38 GMT"
}
Мы ВГА e угловое приложение, которое использует эту конечную точку для аутентификации, и делает это просто отлично.
То, что мы пытаемся достичь без особого успеха, заключается в создании приложения MVC, которое использует тот же сервер для аутентификации, мы хотели бы, чтобы код сидел поверх Identity 2.0, если это возможно.
В нашем AccountController
(пример проекте) у нас есть Login(LoginModel model)
метода, который обрабатывает логин и выглядит следующим образом (так же, как шаблон пример проекта):
var result = await _signInManager.PasswordSignInAsync(model.UserName, model.Password, model.RememberMe, shouldLockout: false);
У нас есть собственная РЕАЛИЗАЦИЯ из IUserStore, UserManager, SignInManager.
Я рассмотрел наиважнейшая
public Task<SignInStatus> PasswordSignInAsync(string userName, string password, bool isPersistent, bool shouldLockout) on `SignInManager<,>` and make a web call across to the security server.
Реализация по умолчанию PasswordSignInAsync
вызовов UserManager.FindByNameAsync
Однако это означало бы, что я должен выставить метод поиска на моем сервере безопасности, чтобы подтвердить имя пользователя существует, который на самом деле не звучит неплохо.
Должно быть, что-то не хватает, и я знаю, что это не будет сложно, наше приложение MVC должно использовать аутентификацию cookie, но также поддерживать токен медведя для последующих вызовов на наш другой сервер ресурсов.
(Я ценю, что я могу смешивать технологии здесь, следовательно, вопрос).
Это также работает на OWIN.
Вы хотите, чтобы новое приложение MVC использовало существующий сервер аутентификации для своего токена? Если да, то какое преимущество вы надеетесь получить? –
В вашем приложении MVC не должно быть контроллера входа. В любом случае, никто не принимает пользователя и пароль. Ваше приложение MVC должно пройти аутентификацию и получить AccessToken с вашего SecurityServer, и вы должны расшифровать этот токен в MVC. Это будет возможно, если сервер разделяет некоторые свойства. Прочтите эту статью для получения дополнительной информации: http://bitoftech.net/2014/09/24/decouple-owin-authorization-server-resource-server-oauth-2-0-web-api/ – Xavero
Не уверен, что я правильный вопрос. * Мы пытаемся добиться без особого успеха, чтобы создать приложение MVC, которое использует тот же сервер для аутентификации *. Возможно ли ударить эту конечную точку маркера сервера безопасности через HttpClient из вашего действия AccountController Login с именем пользователя и пароль, который запустил бы токен в файле cookie ответа, если запрос будет аутентифицирован? – Developer