IdentityServer的Aurelia和Open-Id-Connect插件

问题描述 投票:1回答:1

我已经使用Quickstart示例实现了本地IdentityServer并将 Aurelia-Opein-Id-Connect连接到它。设置工作正常。

我的问题是:

  1. 当我按原样运行Aurelia应用程序时,它会向我提供(声明)名称和网站。但是当我更改open-id-connect-configuration-identity-server.ts并将“token”添加到response_type: "id_token token"时,它并没有向我提供我的声明,即名称和网站。虽然现在它为我提供了access_token。
  2. 如何使用此access_token并在成功登录后使用它来访问web-api?

如果有人可以分享他们的经验。

aurelia identityserver4 oidc
1个回答
0
投票

要使用access_token发出HTTP请求,您需要在请求标头上将其设置为Bearer令牌。这可以通过您当然想要的任何方式完成,一种方便的方法是编写一个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);

但是,这完全取决于您的喜好。

© www.soinside.com 2019 - 2024. All rights reserved.