Как изменить поставщика токенов по умолчанию в сервисе идентификации - PullRequest
0 голосов
/ 20 апреля 2020

У меня есть 2 проекта API и Auth Server с использованием asp. net core 3.1. В проекте API я использую проверку подлинности токена сервера идентификации 4 для проверки токена Я также использую идентификатор в проекте API.

Ниже приведен код для проверки токена в проекте API

 var authAuthority = "https://localhost:5000";   // Configuration["BlazorBoilerplate:IS4ApplicationUrl"].TrimEnd('/');

       var authBuilder = services.AddAuthentication(options =>
        {
            options.DefaultScheme = IdentityServerAuthenticationDefaults.AuthenticationScheme;
        })
       .AddIdentityServerAuthentication(options =>
       {
           options.Authority = authAuthority;
           options.SupportedTokens = SupportedTokens.Jwt;
           options.RequireHttpsMetadata = false;
           options.ApiName = "weatherapi";
       });

my user claims

После проверки токена утверждения пользователя отображаются в объекте httpContext.User.Identity. Просьба ссылаться на снимок экрана.

Если я добавил службу идентификации к приведенному ниже коду в классе ConfigureServices.

public void ConfigureServices(IServiceCollection services)
        {

            services.AddIdentity<User, Role>()
          .AddRoles<Role>()
          .AddEntityFrameworkStores<CBSContext>()
          .AddDefaultTokenProviders();
        }

После добавления службы идентификации asp. net, AuthorizationHandlerContext будет пустым. .. Есть ли какая-либо связь между службой идентификации и проверкой токена сервера идентификации.

  1. Аутентификация пользователя на сервере аутентификации --- Работает идеально
  2. Мне нужно использовать пользователя / роль менеджер идентичности в проекте API. Я просто хотел поменять сервисы. AddDefaultIdentity для проверки подлинности сервера идентификации i, как это сделать?

    Пожалуйста, предложите ..

1 Ответ

1 голос
/ 20 апреля 2020

*> После добавления выше asp. net службы идентификации,

httpContext.User.Identity (cliams) отображается пустым. Есть ли какая-либо связь между службой идентификации и идентификацией проверка токена сервера. Пожалуйста, предложите .. * Да: см. Это изображение: https://identityserver4.readthedocs.io/en/latest/_images/middleware.png (напоминание https://identityserver4.readthedocs.io/en/latest/_images/protocols.png)

При добавлении:

services.AddIdentity<User, Role>() .AddRoles<Role>() .AddEntityFrameworkStores<CBSContext>() .AddDefaultTokenProviders();

вашему API, вы также говорите, что храните токены самостоятельно. Помните, что аутентификация и авторизация - это две разные концепции (для получения дополнительной информации: Большая картинка )

Вы можете использовать аутентификацию в своем API для i.ex. убедитесь, что вызывающий является тем, кто является вызывающим (удостоверение). Но запустите ваш сервер авторизации в другом месте, где вы проверяете, как вы сказали.

Но когда вы этот код говорите, вы сохраняете свой токен в этом DBContext.

You может быть Authz. и авт. на вашем API и используйте это, например, для входа в систему клиентов и претензий et c. Но вы также можете сказать, что вы полагаетесь на другой сервер для Authz. часть, чтобы вы объединить эту проверку. (Извините за длинный ответ, мой первый ответ на SO)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...