我最近開始使用Azure Active Directory來針對構建於AngularJS上的我的網站對用戶進行身份驗證。使用OWIN Active Directory承載令牌啓用多個租戶
使用博客和sample code on GitHub,我已經與單租戶合作使用ADAL.js和Katana的Bearer Token AD integration。
但是,我現在遇到了一些支持多個租戶的問題。
我有一個頁面設置顯示用戶爲ADAL看見他們(通過發現的根範圍內的userInfo
),以及讓我的服務器得到由OWIN接走了,序列化context.Authentication.User
通話。
客戶端,一切似乎都正常工作。我可以與任何租戶一起登錄,它給了我期望的對象(其中isAuthenticated: true
,username
已填充,並且profile
上的各種屬性描述了用戶,登錄名和租戶)。
如客戶端文檔中所述,通過將tenant
參數從我的adalAuthenticationServiceProvider.init
調用中取消,從而完成客戶端。
服務器端,但是,UseWindowsAzureActiveDirectoryBearerAuthentication
方法不喜歡Tenant
(因爲它拋出一個異常)沒有價值。我爲此嘗試了一些值,其中包括我的應用最初註冊的租戶,以及我最喜歡的「普通」租戶,但不管我放在哪裏(除非它是我嘗試登錄的租戶與,如果我的ADAL與該租戶成立),它似乎只是略過了這一點。
值得一提的是,實際的API調用在[Authorize]
篩選器上失敗並返回401,這告訴我這對OWIN攔截器不是問題。
如何識別UseWindowsAzureActiveDirectoryBearerAuthentication
以支持多租戶認證?
你應該看看https://github.com/Azure-Samples/active-directory-dotnet-webapp-multitenant-openidconnect/blob/master/TodoListWebApp/App_Start/Startup.Auth.cs – ken
這裏有一個圍繞該配置發表評論:而不是使用默認驗證(針對單個發行商價值進行驗證,就像我們在業務線應用程序中那樣), //我們注入了我們自己的多租戶驗證邏輯 – ken