Мне нужен пользователь для входа на веб-сайт, используя проверку подлинности на Facebook. Теперь мне нужно установить ссылку на пользовательский диск в Google (и другие службы). Я хочу использовать провайдеров ASP.Net Идентичность OAuth, удостоверяющих личность для обработки маркера обмена, но я не хочу его трогать существующий UserCredential или использовать его для SignIn
в UserPrincipal
Does SignInAsAuthenticationType позволяет мне получить токен OAuth без перезаписи существующих требований?
Моя цель состоит в том, чтобы предотвратить
AuthenticateCoreAsync
с возвратомAuthenticationTicket
, который вносит изменения в действующий идентификатор пользователя- Пользователь, сокращающий систему аутентификации, используя претензии, полученные от Google. (Я должен был уже зарегистрировать пользователя с помощью других средств)
- Предотвратить использование неожиданного токена/файла cookie для создания допустимого сеанса, создающего сценарий эскалации привилегий?
Вопрос
Какой эффект установки пользовательских grantIdentity есть на
IOwinContext.Authentication.SignIn()
?Does SignInAsAuthenticationType решает мою потребность?
Если нет, то когда это будет использоваться?
Теоретическое код с помощью провайдера 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"
});
Чтобы уточнить, вы хотите войти в систему через свой личный профиль Facebook, а затем добавить другие идентификаторы, такие как Google, чтобы получить доступ к их ресурсам, но вы не хотите, чтобы пользователь мог войти в систему ваш сайт через других поставщиков (например, Google)? – Tratcher
@Tratcher точно правильный. Хотя я использую идентификацию Facebook как «основной идентификатор», я на самом деле создаю свое собственное промежуточное ПО идентификации как вилку с существующим промежуточным программным обеспечением OpenIDConnect. (со ссылкой на исходный код Катаны) – LamonteCristo
См. также возможность добавления нескольких типов аутентификации ... может быть релевантным http://stackoverflow.com/q/41985478/328397 – LamonteCristo