【问题标题】:Using Amplify credentials in Angular Interceptor在 Angular 拦截器中使用 Amplify 凭据
【发布时间】:2018-09-27 18:53:45
【问题描述】:

我们正在使用 Amplify 对 AWS Lambda 进行身份验证。我们正在尝试为我们的产品添加安全性,因此我添加了一个拦截器来检索当前凭据并将它们添加到每个请求的标头中。

以下代码正确拦截了请求,并正确检索了访问令牌。但是,由于所有的移动部分都是由异步 Promise / Observable 驱动的,所以请求在添加 header 之前就出去了。我需要改变什么?

对于我在 Promise / Observable 方面的有限经验,我深表歉意。

    intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    console.log("INTERCEPTED!!");
    this.auth.userCredentials().subscribe( result => {
        this.sessionToken = result.sessionToken;
        console.log(this.sessionToken);
        request = request.clone({
            withCredentials : true,
            setHeaders: {
                Authorization: `Bearer ${this.sessionToken}`
            }            
        });
    });
    console.log(request);
    return next.handle(request);
}

【问题讨论】:

    标签: angular rxjs aws-amplify


    【解决方案1】:

    这似乎工作正常。有三个问题。 1) 我需要设置 withCredentials=false。 2) 我需要从我的订阅中返回 next.handle。 3) 来自用户凭证的会话令牌是错误的令牌,Cognito 想要 session.idToken.jwtToken。

    intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
        this.auth.session().subscribe( 
            result => {
                this.sessionToken = result.idToken.jwtToken;
                request = request.clone({
                    withCredentials : false,
                    setHeaders: {
                        Authorization: `Bearer ${this.sessionToken}`
                    }            
                });    
                return next.handle(request);
            });
        return next.handle(request);
    }
    

    【讨论】:

      【解决方案2】:
      import { Auth } from 'aws-amplify';
      ....
      
      async getToken(){
         return (await Auth.currentSession()).getAccessToken().getJwtToken()
        }
      

      【讨论】:

      猜你喜欢
      • 2022-01-04
      • 2018-07-08
      • 2023-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-03
      相关资源
      最近更新 更多