Плагин Aurelia и Open-Id-Connect для IdentityServer - PullRequest
0 голосов
/ 05 сентября 2018

Я реализовал локальный IdentityServer с использованием образца Quickstart и подключил Aurelia-Opein-Id-Connect . Настройка работает отлично.

У меня есть вопрос:

  1. Когда я запускаю приложение Aurelia как есть, оно предоставляет мне имя (Заявки) и веб-сайт . Но когда я изменяю open-id-connect-configuration-identity-server.ts и добавляю «токен» в response_type: "id_token token", он не предоставляет мне мои утверждения, а именно имя и веб-сайт. Хотя теперь он предоставляет мне access_token.

  2. Как использовать этот access_token и использовать его для доступа к web-api после успешного входа в систему?

Пожалуйста, если кто-нибудь может поделиться своим опытом по этому вопросу.

1 Ответ

0 голосов
/ 06 сентября 2018

Чтобы использовать access_token для выполнения HTTP-запросов, вам необходимо установить его в качестве токена-носителя в заголовках ваших запросов. Конечно, это можно сделать любым удобным для вас способом. Удобный способ сделать это - написать interceptor, который будет добавлять заголовок для каждого HTTP-запроса, который вы делаете.

Способ создания перехватчика заключается в следующем: main.ts:

import { HttpClient } from "aurelia-fetch-client";

export function configure(aurelia: Aurelia) {
  // Other configuration

  const httpClient = aurelia.container.get(HttpClient);

  httpClient.configure((config) => {
    config
      .withInterceptor({
        request(request) {
          const token = getToken(); // Implement your preferred way to do this
          if (token) {
            request.headers.append("Authorization", `Bearer ${token}`);
          }
          return request;
        }
    });
  });

  // More configuration
}

Этот код добавит access_token, который вы получите, используя getToken(), к любому HTTP-запросу, который вы делаете.


способ получить токен здесь - это сохранить токен в одноэлементном классе, который затем извлекается из контейнера Aurelia так же, как вы извлекаете httpClient:

const currentUser = aurelia.container.get(CurrentUser);

Однако это полностью зависит от того, что вы предпочитаете.

...