2016-04-15 17 views
2

私たちはフロントエンドをNodeJsのAngularJSとバックエンドAPIで開発しました。 Azure ADを認証に使用しています。フロントエンド角度は、紺色の認証のためにadal-angular javascriptライブラリを使用しています。ユーザーがWebサイトにアクセスすると、彼はhttps://login.microsoftonline.comにリダイレクトされ、認証に成功すると、彼はWebサイトにリダイレクトされます。ここまでは順調ですね。
passport-azure-adライブラリを使用してバックエンドAPIを保護する必要があります。フロントエンドだけがこれらのAPIを呼び出しています。
2> OIDCStrategyオープンのためのIDを接続し、私は、デフォルトで印象アズールADの下にあったpassport-azure-ad:どの戦略を使用するのですか

は、認証のためのOpenID接続を使用しています。このライブラリ
1> OAuth2Bearer戦略を使用して利用可能な2つの方法があります。だから私は、私はそれがウェブAPIを呼び出すと、次の要求クライアント(すなわち角度フロントエンド)が作っている参照

GET http://localhost:4030/api/getemployees HTTP/1.1 
Host: localhost:4030 
Connection: keep-alive 
Accept: application/json, text/plain, */* 
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36 
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOi……………………… 
Referer: http://localhost:4030/ 
Accept-Encoding: gzip, deflate, sdch 
Accept-Language: en-US,en;q=0.8 

注承認タグがで始まるシオマネキにおけるしかしdiscussed here
としてのノードのWeb APIを保護するためにOIDCStrategyを使用することを計画していました"ベアラー"
私はクライアントがベアラートークンをサーバーに送信していると仮定しています。

Q
1>ここで使用する戦略はありますか?
2>いつ別のものを使用する必要がありますか?

答えて

6

passport-azure-adを維持しています。ここでの違いは、「認可」と「認証」の違いです。

のOAuth2は(私はこれへのアクセスを持っていますか?)の認可のために使用されています。

のOpenID Connectがは(これは私が誰である)認証に使用されます。

あなたがウェブのAPIに接続している、ユーザーが最も可能性の高い、すでに(彼らは認証を進めてきた)のアイデンティティを持っており、今はちょうど、ユーザーがAPIにアクセスできることを確認したい(承認) 。 OAuth2は、リソースを保護するために使用され、IdPからトークンを消費して、トークンが有効であり、ユーザーがそのリソースにアクセスできることを保証します。ベアラは、私たち(そして業界)がOAuth2のために使用する単なるトークンです。誰かがトークンなしであなたに来たら、あなたはそれらを拒否し、あなたが必要とする正しいトークンを得るためにどこに連れて行くのかを知るためにあなたを呼び出したクライアントまでです。

OpenID Connectは、OAuth2の上に構築されています。ユーザーをログに記録し、最終的にWeb APIに送信します(これはBearerトークンでOAuth2を使用します)。したがって、OpenID Connectは認証に使用されます。

あなたのシナリオではOpenID Connect認証をしているを使用していますので、Web APIがベアラー戦略を使用する必要があります。

私はここでこのすべてを説明しますサンプル書かれています:https://azure.microsoft.com/en-us/documentation/articles/active-directory-devquickstarts-webapi-nodejs/ MEANスタックを使用し、どの私は、フロントエンドとして書いたiOSのサンプルアプリケーションを使用しています。これらの両方で再生すると、認証ピース(iOSアプリ)として動作し、もう一方が認証ピース(node.jsアプリ)として機能するAPIを保護する方法がわかります

ノードのコード。 JSアプリ:https://github.com/Azure-Samples/active-directory-node-webapi

コードiOSアプリのために:これらのトピックにでhttps://github.com/Azure-Samples/active-directory-ios

深いダイビングはここにある:https://azure.microsoft.com/en-us/documentation/articles/active-directory-authentication-scenarios/

は、あなたが他の質問がある場合は、私に教えてください!

+0

これは実際に戦略を選択するのに役立ちました。しかし、 "passport-azure-ad"はブンヤンを使用しています。私は開発とデバッグのためにビジュアルコードを使用しています。私のアプリケーションは、私がVisual Code経由で起動したときに起動するのを止めて、問題は 'bunyan'でした。誰かがすでにここに問題を投稿しています。http://stackoverflow.com/questions/36089897/debugging-breaks-on-launch-with-bunyan- createlogger-node-v5-8(node.jsのバージョンを更新しないで回避策がありますか?私はノードバージョン4.2.6を使用しています) – LP13

+0

喜んで助けました。答えとして投票できますか?回避策としては、app.jsファイルから簡単にロガーを削除することができます。興味深いのは4.2.6とストリーム。 –

+0

ありがとう! "passport-azure-ad"ノードモジュールにapp.jsファイルはありません。ロガーインスタンスを作成しているoidcsetup.jsファイルがあります。しかし、変数 "log"を削除した場合、モジュールはlog.info()メソッドを使用しているどこでも失敗します。私のアプリケーションはbunyanを使用しないので、私のアプリケーションには何の参照もありません。どのapp.jsファイルに言及しましたか? – LP13

関連する問題