Заявки на проверку подлинности Windows Identity Server - PullRequest
0 голосов
/ 04 ноября 2019

Я пытаюсь настроить сервер Identity 4 для работы с моим проектом API. В данный момент я могу запросить токен, но мне нужно добавить имя пользователя и роль в полезную нагрузку. Я пытался с IProfileService, но никаких действий не было выполнено. Как я могу получить эту информацию из проверки подлинности Windows? Вот моя конфигурация:

launchSettings.json

"iisSettings": {
  "windowsAuthentication": true, 
  "anonymousAuthentication": false 

Program.cs

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseKestrel()
            .UseIISIntegration()
            .UseStartup<Startup>();

Startup.cs

        services.Configure<IISOptions>(iis =>
        {
            iis.AutomaticAuthentication = true;
        });

        var builder = services.AddIdentityServer()
              .AddInMemoryIdentityResources(IdentityResourcesConfig.Get())
              .AddInMemoryApiResources(ApiResourcesConfig.Get())
              .AddInMemoryClients(ClientsConfig.Get());

ClientsConfig.cs

        return new Client[]
        {
            new Client
            {
                ClientId = "XYC",
                AllowedGrantTypes = GrantTypes.ClientCredentials,
                AllowedScopes = { "XYC" },
                RequireClientSecret = false,
                AlwaysIncludeUserClaimsInIdToken = true
            }
        };

Ответы [ 2 ]

0 голосов
/ 05 ноября 2019

Первый пункт в IdentityServer, проверка подлинности Windows - это внешний поставщик (в отличие от встроенного файла cookie проверки подлинности IS). Аутентификация Windows запускается с помощью ChallengeAsync API в HttpContext с использованием схемы Windows. Для получения подробной информации вы можете нажать здесь .

Еще один момент - вы используете поток учетных данных клиента,что не так в вашем сценарии. Поток учетных данных клиента использует идентификатор приложения, в нем нет пользователя.

0 голосов
/ 04 ноября 2019

Я работал только с обычной аутентификацией, но классы, которые создают и контролируют способ передачи заявок другим приложениям, должны быть одинаковыми.

Возможно, вам просто нужно добавить заявки в ресурс API, потому чтопо умолчанию заявки, используемые клиентом, не будут включены в токен доступа, который также предоставляется клиенту для запроса API.

    public static IEnumerable<ApiResource> GetApis()
    {
        return new ApiResource[]
        {
             new ApiResource("MyApi", "This is my Api name", new List<string> {
                    "mynameclaimclaimname", 

             }),

имя заявки, которое вы добавляете, есть Имя заявки. Если это не работает, было бы полезно дать нам дополнительную информацию. Как настроены API Ressources (сторона IdentityServer и сторона клиента)? Или вы пытаетесь настроить API в качестве клиента?

...