Получение экземпляра FacebookAuthenticationProvider в IdentityServer (приложение Owin)

Я нахожусь в середине реализации Thinktecture IdentityServer и добавляю возможность для мобильных приложений предоставлять нативно полученные токены доступа Facebook на сервер, который будет реагировать на локальную аутентификацию пользователя.

IdentityServer использует промежуточное ПО Microsoft Owin для аутентификации Facebook. Вот как он добавляется в приложение:

var fb = new FacebookAuthenticationOptions
{
    AuthenticationType = "Facebook",
    SignInAsAuthenticationType = signInAsType,
    AppId = "...",
    AppSecret = "..."
};

То, что я хочу сделать в другом классе, это назвать это:

await [FacebookAuthenticationProvider instance].Authenticated(context);

Но я не могу понять, как получить экземпляр FacebookAuthenticationProvider, который мне нужен. Или это даже необходимо? Могу я просто new один?


person ChrisV    schedule 03.03.2015    source источник


Ответы (1)


Я не делал этого специально, но если я понимаю вашу проблему, я бы реализовал их пользовательский сервис ниже

https://identityserver.github.io/Documentation/docs/advanced/userService.html

И после этого я бы предположил, что он аутентифицируется так же, как обычный ASP.NET, и вы можете проверить свойства Request.IsAuthenticated или User.Identity, чтобы получить информацию.

Опять же, я этого не делал, но я предполагаю, что вызов Facebook для фактической аутентификации будет вызван какой-то ссылкой, и что вы должны зарегистрировать в Facebook внешний URL-адрес обратного вызова для входа, который вызовет одно из действий вашего контроллера ( в этот момент выполняется логика аутентификации), но я предполагаю, что реализация пользовательского сервиса позаботится о большей части работы за вас, и вы просто подключитесь к ней.

Если вы ищете кэширование токена, возможно, взгляните на -

http://brockallen.com/2013/02/21/server-side-session-token-caching-in-wif-and-thinktecture-identitymodel/

person cchamberlain    schedule 11.03.2015