2017-03-21 3 views
3

私はAngular 2の開発で新しくなりました。私のアプリケーションでは、ユーザ名とパスワードをWebサービスのコントローラに渡すログインモジュールがあります。角度2 - パスワード2をウェブAPIに送信中

以下は、Web APIを呼び出す私の角度2のサービスメソッドです。

authenticate(model) {   
    let headers = new Headers({ 'Content-Type': 'application/json; charste=utf-8' }); 
    let options = new RequestOptions({ headers: headers }); 

    let body = JSON.stringify(model); 
    return this.http.post('http://localhost:24314/api/Users/', body, options) 
     .map(response => response.json()).catch(this.handleErrorObservable); 
} 

どういうわけか私は、Web APIに送信しているときに、このパスワードフィールドを暗号化します。

ご意見やご提案をいただければ幸いです。

ありがとうございます。

答えて

-1
authenticate(model) {   
    let headers = new Headers({ 'Content-Type': 'application/json; charste=utf-8' }); 
    let options = new RequestOptions({ headers: headers }); 

    model.pass = yourEncryptionFunction(model.pass, 'superStringPass'); 

    let body = JSON.stringify(model); 
    return this.http.post('http://localhost:24314/api/Users/', body, options) 
     .map(response => response.json()).catch(this.handleErrorObservable); 
} 

yourEncryptionFunction(password: string, cryptoKey: string): string { 
    // .. do something here.. use a lib or just add a static value.. 
    return ....; 
} 

問題は、誰もが...あなたの暗号化mehtodとその使用暗号キーまたは何を見ることができるので、それをすることの本当のメリットはありません、です。 :)

興味深いライブラリ:

0

パスワードを暗号化するためのベストとシンプルなaproachはjavascriptのbtoa方法で、あなたはこの

authenticate(model) {   
    let data = btoa(model.user_name + ':' + model.password); 
    let headers = new Headers({ 'Content-Type': 'application/json; charste=utf-8' }); 
    let options = new RequestOptions({ headers: headers }); 

    let body = JSON.stringify(data); 
    return this.http.post('http://localhost:24314/api/Users/', body, options) 
     .map(response => response.json()).catch(this.handleErrorObservable); 
} 
のようにそれを使用することができます

これを使用すると、詳細は暗号化またはこれ ような何かのためのサードパーティのライブラリHTTPS上でそれらを送信、サーバーに資格情報を渡すには、ここで

+1

btoaは暗号化に絶対に使用されません。これはbase64で文字列をエンコードするだけで、誰でもそれをデコードできます。 – gentiane

+0

はい私は誰でもそれを解読できると知っていますが、普通のユーザーではありません。また、同じテクニックを使用しているウェブサイトもありません。これは単なるオプションです –

+2

あなたの投稿では、btoaがパスワードを暗号化できると言っていました。 btoaは暗号化アルゴリズムではなく、単なるエンコーディングアルゴリズムです。それはまったく違う。そして誰でもそれを解読することができます。 – gentiane

1

を参照してください。自分で暗号化する必要はありません。すべてをHTTPSに送信します。今日のHTTPはもはや信頼できるオプションではありません。

資格情報はコードには表示されず、ユーザーがフォームに入力する必要があります。それらをメモリに入れてサーバーに送信します。理想的なのは、サーバーが認証トークンを交換するので、次にこのトークンをクライアント(ローカルストアなど)に格納できることです。その後、各リクエストにトークンを送信することで、サーバーへのユーザーを認証できます(もちろん、常にHTTPS上にあります)。

+1

ええ 'https'は間違いなく最高のオプションです: –

+0

@gentiane。 HTTPSオプションに完全に同意します。 –

関連する問題