Клиент получает «запрещенный» на конечной точке userInfo

#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.