Angular 4を使用してアプリケーションのフロントエンドを作成しています。バックエンド(JavaのSpringで開発)にOAuth2を実装しているため、アプリケーションを使用するユーザーを認証する必要があります。
重要なのは、バックエンドサーバーログからパスワードを明確に確認でき、SSLを追加するまでMITMによってパスワードが検出される可能性があるということです。
そのため、送信されたパスワードをRSAで暗号化することにしました。私のバックエンドはすでに準備ができていますが、RSAキーペアから暗号化/復号化するための適切なAPIを提供する最新のライブラリが見つかりません。
crypto
モジュールも表示されますが、ECMAS6では使用できなくなりました。 crypto-js
1つはAESとMD5/SHAなどの一部のハッシュのみを提供します。
いくつかをインストールした後、最終的に方法を見つけました。
npm install buffer
npm install crypto-browserify
その後、それを使用します
import {config} from "../app.config";
import {Buffer} from 'buffer/';
import * as crypto from "crypto-browserify";
export class RsaService {
private privateKey: string;
private publicKey: string;
private enabled: boolean;
constructor() {
this.privateKey = config.authentication.rsa.privateKey;
this.publicKey = config.authentication.rsa.publicKey;
this.enabled = config.authentication.rsa.enabled;
}
isEnabled(): boolean {
return this.enabled;
}
encrypt(plaintext: string): string {
if (!this.enabled)
return plaintext;
let buffer = new Buffer(plaintext);
let encrypted = crypto.privateEncrypt(this.privateKey, buffer);
return encrypted.toString('base64');
}
decrypt(cypher: string): string {
if (!this.enabled)
return cypher;
let buffer = Buffer.from(cypher, 'base64');
let plaintext = crypto.publicDecrypt(this.publicKey, buffer);
return plaintext.toString('utf8')
}
}