У меня есть клиент на IdentityServer, который позволяет openid, профилю и электронной почте:
return new[] {
new Client
{
ClientId = "TestWebApp",
ClientSecrets = new [] { new Secret("TestSecret".Sha256()) },
AllowedGrantTypes = GrantTypes.ResourceOwnerPasswordAndClientCredentials,
AllowedScopes = new List<string>{ StandardScopes.OpenId, StandardScopes.Profile,StandardScopes.Email },
}
};
Я также определил следующие ресурсы идентификации,
public static IEnumerable<IdentityResource> IdentityResources()
{
return new IdentityResource[] {
new IdentityResources.OpenId(),
new IdentityResources.Profile(),
new IdentityResources.Email()
};
}
В случае, если претензия отсутствует, я добавляю электронное письмо к заявке пользователя при создании:
await _userManager.AddClaimAsync(testUser, new Claim("email", user.Username));
Теперь из моего контроллера входа с помощью ResourceOwnerPasswordAndClientCredentials
Я отправляю запрос на аутентификацию:
var client = new OAuth2Client(new Uri("http://localhost:44322/connect/token"), "TestWebApp", "TestSecret");
var requestResponse = client.RequestAccessTokenUserName(model.Email, model.Password, "openid profile email");
Это отлично работает, и я возвращаю прицелы, но все они пусты.