web-dev-qa-db-fra.com

Erreur IdentityServer "invalid_client" toujours renvoyée

J'essaie d'utiliser IdentityServer3, mais je ne sais pas pourquoi j'obtiens toujours l'erreur "invalid_client", toujours quoi que je fasse.

Voici le code que j'utilise:

//Startup.cs (Auth c# project)
public void Configuration(IAppBuilder app) {
    var inMemoryManager = new InMemoryManager();
    var factory = new IdentityServerServiceFactory()
        .UseInMemoryClients(inMemoryManager.GetClients())
        .UseInMemoryScopes(inMemoryManager.GetScopes())
        .UseInMemoryUsers(inMemoryManager.GetUsers());

    var options = new IdentityServerOptions {
        Factory = factory,
        RequireSsl = false
    };

    app.UseIdentityServer(options);
}

Assistant InMemoryManager.

//InMemoryManager.cs
public class InMemoryManager {
    public List<InMemoryUser> GetUsers() {
        return new List<InMemoryUser> {
            new InMemoryUser {
                Username = "alice",
                Password = "password",
                Subject = "2",
                Claims = new [] {
                    new Claim("User name", "Alice")
                }
            }
        };
    }

    public IEnumerable<Scope> GetScopes() {
        return new[] {
            new Scope {
                Name = "api1",
                DisplayName = "API 1"
            }
        };
    }

    public IEnumerable<Client> GetClients() {
        return new[] {
            new Client {
                ClientName = "Silicon on behalf of Carbon Client",
                ClientId = "carbon",
                Enabled = true,
                //AccessTokenType = AccessTokenType.Reference,

                Flow = Flows.ResourceOwner,

                ClientSecrets = new List<Secret> {
                    new Secret("secret".Sha256())
                },

                AllowedScopes = new List<string> {
                    "api1"
                }
            }
        };
    }
}

C'est le résultat que j'obtiens toujours.

Postman error

J'utilise postman pour essayer le serveur Auth, mais j'obtiens toujours cette erreur. J'ai lu d'autres solutions mais aucune ne semble fonctionner, je ne sais pas quoi essayer d'autre.

À votre santé.

15
arosgab

Ajoutez simplement client_secret: secret dans votre corps. Ça va marcher!

enter image description here

2
HITESHKUMAR VAGHASIYA

Votre demande doit être la suivante:

  1. En-tête d'autorisation avec clientId/clientSecret. carbon/secret dans votre cas. 1
  2. Dans le corps. username/password doit être alice/password dans votre cas. Si vous n'avez pas besoin d'actualiser les jetons, vous pouvez exclure offline_access portée de la demande. 2
1
Artem

Réponse tardive, mais pour moi, cela s'est produit à la suite du didacticiel IdentityServer 4 lorsque vous essayez de vous connecter avec un nom d'utilisateur et un mot de passe. J'ai utilisé le code du premier tutoriel (en utilisant les informations d'identification du client) et j'ai modifié le client pour utiliser des mots de passe. Après, j'ai continué à recevoir cette erreur.

Pour le corriger, dans le projet IdentityServer, config.cs, dans la méthode GetClients, définissez AllowedGrantTypes sur GrantTypes.ResourceOwnerPassword, et remplacez ClientId de client par ro.client (ou quel que soit le nom du client que vous utilisez dans program.cs du projet Client).

0
yesman