2016-10-20 3 views
1

AWSでモバイルアプリケーションのバックエンドを実行しています。ネイティブのiOS、ネイティブのAndroidと角度jsベースのWebサイトでサポートされているJava Springフロントエンドを使用したバックエンドビルドでは、電子メールIDとパスワードを使用した独自の認証があります。今度は、Azure ADで利用可能な組織Active Directoryとアプリ認証を統合する予定です。Azure AD認証とawsでホストされている既存のJavaベースのWebアプリケーションを統合するオプションはありますか?

Azureポータルアプリケーションの作成についての概要を知り、azalからトークンを取得するためにADALライブラリを使用してください。しかし、Webサービス側でどのようにトークンを検証できるかは不明です。

答えて

2

残念ながら、Azure ADには現時点でJavaのWeb APIを保護するための大きなガイダンスはありません。しかし、この場合、オープンソースのアプローチをとることは非常に難しくありません。

Azure ADのアクセストークンはJWTです。これは、本質的にbase64でエンコードされた署名付きJSON文字列です。 jwt.ioは、JWTを検証するために使用できるオープンソースライブラリの素敵なリストをコンパイルしました(いくつかのライブラリも生成していますが、fyi)。この時点で利用可能な最良の参考資料は、次のとおりです。

  • 請求は、必要に応じて(id_tokensに関するコメントのみ、それは正しくないのですが無視)this token reference articleに記載されています。
  • OpenID Connect specには、トークンの検証方法についてもちょっとしたヒントがあります。また、scopeのクレームを確認してください。クレームは記載されていません。
  • このcode sampleは、このアプローチをどのように行うかを示していますが、.NETにあります。 Javaのパターンに従うことができます。

最も難しい部分は、アプリが鍵のロールオーバーを処理できるように、Azure ADパブリック署名鍵を堅牢に取得、キャッシュ、および更新することです。たとえば、Microsoft's .NET open source libraryは24時間ごとにキーをリフレッシュし、署名の検証に失敗した場合はすぐにリフレッシュします。ほとんどのJWT図書館はそれをあなたのためにしません。署名鍵は、OpenIDの接続仕様もあり、利用可能なデータの形式についての情報を持っている、

https://login.microsoftonline.com/<tenant-or-common>/.well-known/openid-configuration

アズールADのOpenID接続メタデータエンドポイントを経由してご利用いただけます。

+0

私は同じ質問を探していて、ここで遭遇しました。私はまだトークン検証部分を理解していません。私はJWTトークンがADの鍵を使って解読できることを理解しました。サーバがどのように鍵を知っているか? ADからキーを取得するためにはAPIを使用する必要がありますか、キーはADにアプリケーションを登録するときに取得できる静的な値です。 – Vilva

関連する問題