Использование учетных данных Amplify в угловом перехватчике - PullRequest
0 голосов
/ 27 сентября 2018

Мы используем Amplify для аутентификации в AWS Lambda.Мы пытаемся повысить безопасность нашего продукта, поэтому я добавил перехватчик для получения текущих учетных данных и добавления их в заголовок каждого запроса.

Приведенный ниже код правильно перехватывает запрос и корректно получает токен доступа.,Однако, поскольку все движущиеся части управляются асинхронным Обещанием / Наблюдаемым, запрос добавляется до добавления заголовка.Что мне нужно изменить?

Я прошу прощения за мой ограниченный опыт работы с 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);
}

1 Ответ

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

Это, кажется, работает нормально.Было три вопроса.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);
}
...