Potrzebuję użytkownika, aby zalogować się do witryny przy użyciu po wyjęciu z pudełka uwierzytelnienia na Facebooku. Muszę teraz połączyć się z dyskiem użytkowników w Google (i innych usługach). Chcę używać dostawcy ASP.Net Tożsamość Tożsamość OAuth do obsługi tokenu wymiany, ale nie chce go dotknąć istniejący UserCredential lub użyć go do SignIn
z UserPrincipal
Czy metoda SignInAsAuthenticationType pozwala mi uzyskać token OAuth bez nadpisywania istniejących roszczeń?
Moim celem jest zapobieganie
AuthenticateCoreAsync
z powodu zwrócenia numeruAuthenticationTicket
powodującego modyfikacje bieżącego zalogowanego użytkownika.- Użytkownik skracający system uwierzytelniania za pomocą roszczeń uzyskanych od Google. (Powinienem już mieć zalogowanego użytkownika za pomocą innych środków)
- Uniemożliwić użycie nieoczekiwanego tokenu/pliku cookie do utworzenia prawidłowej sesji, tworząc scenariusz eskalacji uprawnień?
Pytanie
Jaki wpływ ma ustawienie zwyczaj grantIdentity mieć na
IOwinContext.Authentication.SignIn()
?Czy SignInAsAuthenticationType rozwiązuje moje potrzeby?
Jeśli nie, kiedy to zostanie użyte?
kod teoretyczna przy użyciu dostawcy Google
// The cookie needs to be First in the chain.
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = "CustomExternal",
AuthenticationMode = AuthenticationMode.Passive,
CookieName = "MyAwesomeCookie",
ExpireTimeSpan = TimeSpan.FromMinutes(5),
//Additional custom cookie options....
});
//Note that SignInAsAuthenticationType == AuthenticationType
app.UseGoogleAuthentication(new GoogleOAuth2AuthenticationOptions
{
AuthenticationType = "GoogleBackOffice",
ClientId = "abcdef...",
ClientSecret = "zyxwv....",
SignInAsAuthenticationType = "CustomExternal"
});
Aby wyjaśnić, chcesz zalogować się do użytkownika za pośrednictwem jego tożsamości na Facebooku, a następnie chcesz dodać inne tożsamości, takie jak Google, aby uzyskać dostęp do ich zasobów, ale nie chcesz, aby użytkownik mógł się zalogować do twoja strona za pośrednictwem innych dostawców (np. Google)? – Tratcher
@ Doktor dokładnie poprawne. Chociaż używam tożsamości Facebooka jako "podstawowego identyfikatora", w rzeczywistości będę tworzyć własne oprogramowanie pośredniczące w tożsamości jako rozwidlenie istniejącego oprogramowania pośredniego OpenIDConnect. (w odniesieniu do Katana Sourcecode) – LamonteCristo
Zobacz także możliwość dodawania wielu typów uwierzytelniania ... może być istotna http://stackoverflow.com/q/41985478/328397 – LamonteCristo