ASP.Net MVC 5 Google Authentification avec Portée
Je vais essayer d'obtenir ASP.Net MVC 5 Google authentification OAuth2 travail correctement.
Quand je passe dans un GoogleOauth2AuthenticationOptions sans aucune portée, alors je suis en mesure de vous connecter avec succès.
var googlePlusOptions = new GoogleOAuth2AuthenticationOptions
{
ClientId = googleClientId,
ClientSecret = googleClientSecret,
SignInAsAuthenticationType = DefaultAuthenticationTypes.ExternalCookie,
Provider = new GoogleOAuth2AuthenticationProvider()
{
OnAuthenticated = async ctx =>
{
ctx.Identity.AddClaim(new Claim("urn:tokens:googleplus:accesstoken", ctx.AccessToken));
}
},
};
app.UseGoogleAuthentication(googlePlusOptions);
Alors cet appel renvoie un ExternalLoginInfo objet avec toutes les propriétés définies
ExternalLoginInfo loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync();
Quand je ajouter un champ cependant, puis-je ne pas obtenir les informations de connexion retourné. C'est juste nul.
var googlePlusOptions = new GoogleOAuth2AuthenticationOptions
{
ClientId = googleClientId,
ClientSecret = googleClientSecret,
SignInAsAuthenticationType = DefaultAuthenticationTypes.ExternalCookie,
Provider = new GoogleOAuth2AuthenticationProvider()
{
OnAuthenticated = async ctx =>
{
ctx.Identity.AddClaim(new Claim("urn:tokens:googleplus:accesstoken", ctx.AccessToken));
}
},
};
googlePlusOptions.Scope.Add(YouTubeService.Scope.Youtube);
app.UseGoogleAuthentication(googlePlusOptions);
L'appel externes infos retourne null.
ExternalLoginInfo loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync();
Dans Google dev console, j'ai l'Api suivantes allumé..
- Analytics API
- BigQuery API
- Google Cloud SQL
- Google Cloud Storage
- Google Cloud Storage API JSON
- Google+ API
- Google+ les Domaines de l'API
- Identité Trousse à outils API
- YouTube Analytics API
- YouTube de Données de l'API v3
Quelque chose au sujet de l'ajout de portée pour les options, c'est de casser GetExternalLoginInfoAsync.
OriginalL'auteur Rob Gibbens | 2014-03-27
Vous devez vous connecter pour publier un commentaire.
Si quelqu'un a encore de la difficulté avec la plus récente de Microsoft
OWIN middleware (3.0.0+)...
J'ai remarqué de Fiddler que, par défaut, la portée suivante est envoyée à accounts.google.com:
Si vous ajoutez votre propre champ(s) via GoogleOAuth2AuthenticationOptions.La portée.Ajouter(...), alors la portée devient:
Par conséquent, vous devez ajouter la valeur par défaut des étendues de trop (ou au moins, cela a réglé le problème pour moi):
OriginalL'auteur Dunc
Donc, j'ai compris cela, avec beaucoup d'aide de http://www.beabigrockstar.com/blog/google-oauth-sign-asp-net-identity. Il s'avère que le construit dans Google fournisseur d'authentification pour MVC est openId. C'est pourquoi l'ajout d'un champ d'application qu'elle a éclaté. À l'aide de Fiddler, j'ai été en mesure de voir la requête GET accounts.google.com "scope=openid" dans la chaîne de requête.
Par le passage à la GooglePlusOAuth2 fournisseur dans le lien ci-dessus, ou sur Nuget https://www.nuget.org/packages/Owin.Security.GooglePlus et à l'aide de l'opérateur nom de "GooglePlus", j'ai été en mesure de réussir à ajouter les étendues et toujours récupérer les informations de connexion à partir de GetExternalLoginInfoAsync.
OriginalL'auteur Rob Gibbens
Les changements que Google a mis à leur auth mécanismes ont été traduit dans la version 3.0.0 de Microsoft Owin middleware. Comme vous l'avez correctement identifiés, l'un des changements ont été le déplacement de la OAuth point de terminaison de Google+ (https://www.googleapis.com/plus/v1/people/me).
Donc, la clé est de:
OriginalL'auteur jansokoly