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.
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é.
Votre demande doit être la suivante:
clientId
/clientSecret
. carbon
/secret
dans votre cas. 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. 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).