Toujours la réception de 'invalid_client' erreur lors de la Publication d' /Jeton d'extrémité avec ASP Identité 2
Il y a un mois j'avais un projet de travail parfaitement avec l'ASP Identité OAuth. Je voudrais envoyer une requête POST à l' /Jeton d'extrémité avec grant_type, le nom d'utilisateur et le mot de passe, et tout était dandy.
J'ai récemment commencé un nouveau projet basé sur Visual Studio 2013 RC2 SPA du modèle. C'est un peu différent de celui de l'ancien modèle. L'authentification est configuré pour assez basique par défaut,
OAuthOptions = new OAuthAuthorizationServerOptions
{
TokenEndpointPath = new PathString("/Token"),
//AuthorizeEndpointPath = new PathString("/Account/Authorize"),
Provider = new ApplicationOAuthProvider(PublicClientId),
AccessTokenExpireTimeSpan = TimeSpan.FromDays(14),
AllowInsecureHttp = true
};
Rien de significatif n'a changé à partir du modèle par défaut. Je peux créer des comptes avec succès par le biais d'une API Web de contrôleur de la méthode que j'ai mis en œuvre;
//POST: /Account/Register
[HttpPost]
[AllowAnonymous]
public async Task<IHttpActionResult> Register(RegisterBindingModel model)
{
if (ModelState.IsValid)
{
var user = new TunrUser() { UserName = model.Email, Email = model.Email, DisplayName = model.DisplayName };
var result = await UserManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
return Created(new Uri("/api/Users/" + user.Id,UriKind.Relative), user.toViewModel());
}
else
{
return BadRequest(result.Errors.First());
}
}
return BadRequest(ModelState);
}
Toutefois, peu importe ce que je POSTE à l' /Jeton d'extrémité, je toujours obtenir la même réponse.
{"error":"invalid_client"}
Normalement je passe à la suite du corps de la requête
grant_type=password&username=user%40domain.com&password=userpassword
Mais cette résultats dans la même erreur. Cela a fonctionné dans la précédente VS2013 SPA modèle /Identité. Ce qui a changé?
Merci!
Vous devez vous connecter pour publier un commentaire.
Vous devez Remplacer la ValidateClientAuthentication & GrantResourceOwnerCredentials dans le OAuthAuthorizationServerProvider.
Voir exemple ici:
http://www.tugberkugurlu.com/archive/simple-oauth-server-implementing-a-simple-oauth-server-with-katana-oauth-authorization-server-components-part-1
Il s'avère donc que les nouveaux modèles n'incluent pas une fonctionnelle de la mise en œuvre de ApplicationOAuthProvider qui était présent dans les anciens modèles.
Après avoir regardé ce build parler, j'ai étudié et a trouvé qu'un travail de mise en œuvre de ApplicationOAuthProvider est disponible à vérifier dans le ce package NuGet! Il est très similaire à l'ancienne mise en œuvre.
En outre, vous pouvez utiliser le ApplicationOAuthProvider classe qui vient avec la WebApi modèle lorsque les Comptes d'Utilisateur Individuels est choisi comme option de Sécurité. Cependant, vous aurez à changer quelques choses d'autres, que j'ai énumérés ci-dessous. J'espère que cela aide.
La ApplicationOAuthProvider classe qui vient avec la WebApi/Comptes d'Utilisateur Individuels de modèle contient la méthode suivante:
Copie de la présente à la ApplicationOAuthProvider classe dans votre SPA modèle de projet, l'écrasement de la méthode d'origine. Le code
user.GenerateUserIdentityAsync
méthode n'est pas valide lorsqu'il est copié sur le modèle de SPA projet car le ApplicationUser classe ne permet pas le "porteur" type d'authentification.Ajouter une surcharge similaire à la suivante, pour le ApplicationUser classe (il se trouve dans le
Models\IdentityModels.cs
fichier):Vous devriez maintenant être en mesure d'utiliser
/Token
d'extrémité correctement.