Я пытаюсь реализовать внешний вход google с помощью owin, мне не нужно сохранять пользователя в Db, все найденные мной демо привязаны к EntityFramework, поэтому я попытался раздеть его и попал в рабочей реализации здесь:Bare minimum Owin OAuth внешний вход
public partial class Startup
{
public void ConfigureAuth(IAppBuilder app)
{
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Account/Login")
});
app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);
app.UseGoogleAuthentication("myid00000000000.apps.googleusercontent.com", "mysecret");
}
}
и контроллер:
public class AccountController : Controller
{
private const string XsrfKey = "XsrfId";
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult ExternalLogin(string provider, string returnUrl)
{
// Request a redirect to the external login provider
return new ChallengeResult(provider, Url.Action("ExternalLoginCallback", "Account", new { ReturnUrl = returnUrl }));
}
//
// GET: /Account/ExternalLoginCallback
[AllowAnonymous]
public async Task<ActionResult> ExternalLoginCallback(string returnUrl)
{
var loginInfo = await HttpContext.GetOwinContext().Authentication.GetExternalLoginInfoAsync();
if (loginInfo == null)
{
return Content("failed");
}
return Content("logged in");
}
internal class ChallengeResult : HttpUnauthorizedResult
...
теперь я не знаю наверняка, если этого достаточно, если я не пропустил некоторые шаги проверки пользователя, , когда я вызываю Authentication.GetExternalLoginInfoAsync()
, и получаю ненулевой результат. означает, что я могу быть уверен, что информация в loginInfo
действительно поступает из Google или мне нужно сделать некоторые дополнительные запросы в Google, чтобы проверить эту информацию?
Нет, с тобой все должно быть хорошо. Но, если вы не доверяете ему, отлаживайте и проверяйте все, что происходит, поэтому вы можете сами убедиться, что он работает. –
@ChrisPratt, когда я его отлаживаю loginInfo имеет имя профиля, адрес электронной почты, исходящий от google, это просто мой первый эксперимент с этим, и я думал, что мне нужно проверить эту информацию, думаю, owin уже сделал это –