Azure ADを使用してマルチテナントサービスWeb APIを呼び出す、マルチテナントAngularJSシングルページアプリケーションで認証を有効にするにはどうすればよいですか?マルチテナント認定を有効にする方法(AngularJS <-> Azure AD)?
これは私が使用可能にしようとしている高レベルのフローである:
マルチテナントAngularJSアプリケーション[ClientApp] - >マルチテナントASP.NETウェブAPI [サービスアプリケーション]
私は、ADAL for JS(OpenID Connect)を使用してAzure ADログインが必要なマルチテナントのAngularJSアプリケーションを持っています。このウェブアプリケーションは、マルチテナントアプリケーションClientApp
として開発者Azure ADに登録されており、DevAAD
と呼びます。私はTenant1
と呼ぶ別のAzure ADでこのClientApp
アプリケーションを使用することに同意しました。 Tenant1
ディレクトリのユーザーが資格情報を使用してWebアプリケーションにログインしてlogin.microsoftonline.comポータルにアクセスすると、Web UIにアクセスできます。ただし、UIは、OAuth 2.0暗黙のフローを使用して、ユーザーに代わってWeb APIを呼び出すことができません。
AADSTS65001:ユーザーまたは管理者がID「<ClientApp_ClientID>」で アプリケーションを使用することに同意していないこれは私がJavaScriptコードで見ていたエラーメッセージです。このユーザーとリソースの対話型の 承認リクエストを送信します。
ClientApp
UIアプリケーションと同じDevAAD
ディレクトリに登録されているServicesApp
と呼ばれるバックエンドのWeb APIサービスを表す他のAzure ADマルチテナントアプリがあります。 ServicesApp
のクライアントIDとアプリID URIが、これらのサービスの有効なオーディエンスです。このServicesApp
アプリケーションは同じTenant1
ディレクトリに同意されています。 ServicesApp
へのアクセス権を持つネイティブクライアントアプリケーションから呼び出されると、サービスはコントローラのSystem.IdentityModel.Tokens.Jwt 4.0.0 and the [System.Web.Http.Authorize]
属性で提供されているOWINミドルウェアを使用してTenant1
ディレクトリからユーザーを認証しています。
構成の詳細:
ClientApp
のAzure ADのアプリケーションマニフェストをtrueにavailableToOtherTenants
セットとtrueにoauth2AllowImplicitFlow
セットを持っています。 ClientApp
には、ServiceApp
Azure ADアプリケーションにアクセスする権限があります。
AngularJSアプリケーションは、以下の構成があります。ServiceApp
adalAuthenticationServiceProvider.init(
{
tenant: 'common',
clientId: <ClientApp_ClientID>,
endpoints: { <ServiceEndpoint> : <ServiceApp_ClientID> }
}, $httpProvider);
を
ValidateIssuerがIAppBuilder.UseWindowsAzureActiveDirectoryBearerAuthentication()
「
に渡さ
WindowsAzureActiveDirectoryBearerAuthenticationOptions
構成オブジェクトにTokenValidationParameters
オブジェクトではfalseに設定されています既知のClie ServiceApp ntApplications「のプロパティ 『』 [<ClientApp_ClientID>「]
アズールADマニフェストはへ セットで」私はマルチテナント型のWeb APIを呼び出すマルチテナントWebアプリケーションのいずれかの例を見つけることができませんでしたAngularJSで構築された単一のページアプリケーションです。 Azure ADでこれをどのように実装できますか?
あなたは「あなたはこのアプリの使用に同意した」と言います。それはあなたが実際に私たちの同意フレームワークを通過したことを意味しますか?あなたのWeb APIには、(Graph APIのような)アクセスする必要のある下流のAPIがありますか?同意画面でこれらの追加のアクセス許可を確認しましたか? –
はい、同意フレームワークを使用して、ClientAppおよびServiceAppアプリケーションへの "Tenant1"アクセスを提供しました。[http://account.activedirectory.windowsazure.com/Consent.aspx?ClientID=clientId](http ://account.activedirectory.windowsazure.com/Consent.aspx?ClientID = clientId)、「Tenant1」ディレクトリのユーザーとグローバル管理者の役割でログインします。 「アクセスを許可する」をクリックし、従来のポータルの「Tenant1」ディレクトリにあるClientAppとServiceAppの両方をアプリケーションとして見ることができます。 –
こんにちはRyan、これは従来のプロセスと思われ、私はあなたがそれを正しく行っているとは確信していません。ここをクリックしてください[外部ユーザーへのアクセスを許可するリンクを構築する(レガシー)](https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-integrating-applications)下記の私の答えを見て、URLのサインを生成し、ユーザーがアプリに同意するように更新された方法を探してください。 –