現在、Jhipster を使用して次のコンポーネントを生成しています。
- UAA - 認証サーバー
- API ゲートウェイ
- マイクロサービス - Product1
- サービス ディスカバリ - 領事
その他のコンポーネント:
- カスタム フロントエンド (Angular 4) - 別のプロジェクトで
また、カスタム フロントエンドは、標準の Jhipster Api Gateway にある Jhipster angular 4 コードを使用していることにも注意してください。これには、customHttpProvider が含まれます。
現時点では、このセットアップで正常にログインし、UAA で API を呼び出すことができますが、Product で API を呼び出そうとすると、たとえば Post to Product1/api/zcdのように401 Unauthorizedが返されます。
サービスはすべて Consul で表示され、緑色で表示されます。また、Gateway には、UAA と Product1 の両方が登録済みで使用可能なルートとして含まれています。
これまでのところ、Product への API 呼び出しを行ったときに AuthInterceptor が呼び出されているようには見えないことがわかりました。メソッドに jwt トークンを手動で追加してみましたが、これで問題は解決しましたが、リクエストをインターセプトしてトークンを追加するために customHttpProvider が使用されていない理由がわかりません。
以下の私の ProductService は、示されているようにトークンを手動で挿入すると機能しますが、これは明らかに正しい方法ではありません。
@Injectable()
export class ProductService {
private options = new Headers();
constructor(private http: Http) {
this.options.append('Authorization', 'Bearer ' + 'token is inserted here');
}
priceProduct(productPriceRequest: productPriceRequest): Observable<IdResponse> {
return this.http.post('Product1/api/zcd', productPriceRequest, { headers: this.options })
.map(response => response.json());
}
}