Ich habe einen kleinen IdentityServer-Demo-Server geschrieben, der den Beispielen in der Dokumentation folgt. Ich habe folgende TestUser
:IdentitySever4 Benutzeransprüche und ASP.NET User.Identity
new TestUser
{
SubjectId = "1",
Username = "Username",
Password = "password",
Claims = new List<Claim>()
{
new Claim(System.Security.Claims.ClaimTypes.Name, "Username"),
new Claim(System.Security.Claims.ClaimTypes.Email, "[email protected]")
}
}
Ich erhalte eine Zugriffstoken mit ResourceOwnerPassword
Flow. Und ich bin berechtigt, auf meine API zuzugreifen.
Das Problem ist, dass, wenn ich in meiner geschützten API versuche, die Benutzeridentität zu erhalten, die Name-Eigenschaft als null zurückgegeben wird, und ich sehe nicht die E-Mail-Anspruch. Egal was ich mache, ich sehe immer die gleichen 12 Ansprüche. Der Anspruch sub
ist der einzige mit den Informationen, die ich in das Objekt Client
eingegeben habe.
Wie kann ich die HttpContext.User.Identity.Name
Eigenschaft ausfüllen und zusätzliche Ansprüche/Daten über den Benutzer senden?
Ich verstehe nicht, wo diese setzen. Auf der API-Seite? auf der Auth Server Seite? – developer82
Nur zur Klarstellung, ich richte Identity-Server wie folgt ein: 'app.UseIdentityServer();' – developer82
Ich fand, dass wenn ich auf meiner API die Optionen für 'UseIdentityServerAuthentication' auf' NameClaimType = "sub" 'Ich bin den Namen mit dem Inhalt meines Themas füllen. Das Problem besteht also darin, dass die Ansprüche, die ich an den Benutzer sende, nicht in der API wiedergegeben werden. – developer82