Aurelia和IdentityServer的Open-Id-Connect插件

时间:2018-09-05 00:10:52

标签: aurelia identityserver4 oidc

我已经使用快速入门示例实现了本地IdentityServer,并将 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 :(得分: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);

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