Я довольно новичок в пространстве OAuth2 и OpenID Connect, и я пытаюсь создать API и защитить его с помощью IdentityServer4. Я создал следующие ресурсы: -Identityserver4 ApiResource и IdentityResource с одинаковыми именами
public static class MyResources
{
public static IEnumerable<IdentityResource> GetIdentityResources()
{
return new List<IdentityResource>()
{
new IdentityResources.OpenId(),
new IdentityResources.Profile(),
new IdentityResource("someResource", "some description", new [] { "something" })
};
}
public static IEnumerable<ApiResource> GetApiResources()
{
return new List<ApiResource>()
{
new ApiResource("someResource", "some other description", new [] { "somethingElse" })
};
}
}
Так как вы можете видеть, что у меня есть IdentityResource под названием someResource и также ApiResource с тем же именем называется someResource. И, наконец, в моей конфигурации Клиентов, я определил клиент Scopes следующих , который включает someResource для доступа
public static class Clients
{
public static IEnumerable<Client> GetClients()
{
return new[]
{
new Client
{
ClientId = "MyClientId",
ClientName = "My Client Name",
ClientSecrets = new List<Secret> { new Secret("secret".Sha256()) },
AllowedGrantTypes = GrantTypes.HybridAndClientCredentials,
RedirectUris = { "http://localhost:5002/signin-oidc" },
PostLogoutRedirectUris = { "http://localhost:5002" },
AllowedScopes = new List<string>
{
StandardScopes.OpenId,
StandardScopes.Profile,
"someResource"
},
RequireConsent = true,
AllowOfflineAccess = true
}
};
}
}
При запуске приложения, это то, что я вижу на экране согласия
Как вы можете видеть на скриншоте, экран согласия предоставляет как IdentityResource, так и ApiResource, называемый someResource. Является ли этот дизайн преднамеренным, и вы должны тщательно планировать именование ресурсов, чтобы не иметь конфликта. Я ожидал бы, что 2 разных ресурса с таким же именем будут вызывать как минимум ошибку времени выполнения, поскольку области действия клиента могут различаться только по имени, а не по типу ресурса. Что ты думаешь?