Ich versuche, IdentityServer3 zu verwenden, weiß aber nicht, warum ich immer den Fehler "invalid_client" erhalte, egal was ich tue.
Dies ist der Code, den ich verwende:
//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);
}
InMemoryManager-Hilfsprogramm.
//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"
}
}
};
}
}
Das ist das Ergebnis, das ich immer bekomme.
Ich benutze Briefträger, um den Auth-Server zu testen, aber ich erhalte immer diesen Fehler. Ich habe eine andere Lösung gelesen, aber keine scheint zu funktionieren. Ich weiß nicht, was ich noch versuchen soll.
Prost.
Ihre Anfrage sollte wie folgt lauten:
clientId
/clientSecret
. carbon
/secret
in Ihrem Fall. username
/password
sollte in Ihrem Fall alice
/password
sein. Wenn Sie keine Token aktualisieren müssen, können Sie den Bereich offline_access
von der Anforderung ausschließen. Späte Antwort, aber für mich geschah dies nach dem IdentityServer 4-Tutorial, als ich versuchte, mich mit einem Benutzernamen und einem Passwort anzumelden. Ich habe den Code aus dem ersten Tutorial verwendet (mit Client-Anmeldeinformationen) und den Client so geändert, dass er Passwörter verwendet. Danach bekam ich immer wieder diesen Fehler.
Um dies zu beheben, setzen Sie im IdentityServer-Projekt config.cs
In der GetClients
-Methode AllowedGrantTypes
auf GrantTypes.ResourceOwnerPassword
Und ändern Sie ClientId
von client
bis ro.client
(oder wie auch immer der Clientname lautet, den Sie in der Datei program.cs des Client-Projekts verwenden).