Below is my code on how to send authentication to Spring boot side but I get an error that cannot be sent, can someone help me?
auth-interceptor.service.ts
@Injectable({
providedIn: ‘root’
})
export class AuthInterceptorService implements HttpInterceptor {
constructor(@Inject(OKTA_AUTH) private oktaAuth: OktaAuth) { }
intercept(request: HttpRequest, next: HttpHandler): Observable<HttpEvent> {
console.log(‘Access Token:1111’);
return from(this.handleAccess(request, next));
// from() là một hàm từ thư viện RxJS trong Angular được sử dụng để tạo ra một observable từ một promise, một iterable,…
}
private async handleAccess(request:HttpRequest, next:HttpHandler): Promise<HttpEvent> {
//thêm mã thông báo cho các api được bảo mật
const securityEndpoint =[‘http://localhost:8080/api/orders’];
console.log(‘Access Token:1111’);
alert(‘Access Token:1111’);
if(securityEndpoint.some(url=>request.urlWithParams.includes(url))){//kiểm tra xem url có chứa trong securityEndpoint không
const accessToken = this.oktaAuth.getAccessToken();
console.log(‘Access Token:’, accessToken);
//clone the reuqest(vì yêu cầu ko thể thay đổi trực tiếp được)
request = request.clone({
setHeaders: {
Authorization: 'Bearer '+accessToken
}
});
}
return await lastValueFrom(next.handle(request));
//lastValueFrom() chuyển đổi observable thành promise
}
}
config.ts
i
const oktaConfig= new OktaAuth(oicd_config.oidc);
export const appConfig: ApplicationConfig = {
providers: [
provideRouter(routes),
provideClientHydration(),
provideHttpClient(),
{ provide: OKTA_CONFIG, useValue: { oktaAuth: oktaConfig } },
importProvidersFrom(OktaAuthModule.forRoot({ oktaAuth: oktaConfig })),
{ provide: HTTP_INTERCEPTORS, useClass: AuthInterceptorService, multi: true },
],
};