#oauth-2.0 #identityserver4 #openid-connect
#oauth-2.0 #identityserver4 #OpenID-connect
Вопрос:
Итак, мы настроили IDP (IdentityServer4, Core2) и без проблем используем его для наших собственных приложений (неявный поток). Однако теперь один из наших партнеров будет использовать наш IDP для выполнения запросов API из другого приложения.
Мы настроили ApiResources:
new ApiResource("api", "API",
new List<string>() {
IdentityServerConstants.StandardScopes.OpenId,
IdentityServerConstants.StandardScopes.Email,
IdentityServerConstants.StandardScopes.Profile,
"role",
"team"
})
Клиент, о котором идет речь:
new Client {
ClientName= "ClientName",
Description = "ClientDescription",
LogoUri = "/img/ClientLogos/clientLogo.png",
ClientUri = "https://client.url",
RedirectUris = {
"https://...",
"https://...",
"http://...",
"http://..."
},
AllowedGrantTypes = GrantTypes.Code,
RequireConsent = true,
ClientId = "clientId",
AllowedScopes = { "api" },
ClientSecrets = { new Secret("clientSecret".Sha256()) },
AlwaysSendClientClaims = true,
AllowOfflineAccess = true,
Claims = {
...
}
}
Я (ошибочно) предположил, что, поскольку у клиента есть область «api», которая, в свою очередь, имеет область «OpenID» и «Profile», клиент автоматически получит разрешение на использование конечной точки userInfo, но они получают «Запрещенный» код состояния.
Может кто-нибудь объяснить мне, что мы здесь делаем не так?
Ответ №1:
Я думаю, вам также нужно включить IdentityResources, потому что это определяет, какая часть ID-токена и что доступно из конечной точки userInfo.