2013-09-25 19 views
8

我正在用HTML/CSS/JS前端編寫一個相當大的應用程序,使用AngularJS和ASP.NET MVC Web API作爲後端。讓純HTML/CSS/JS SPA應用程序詢問用戶的用戶名/密碼並將其傳遞給ADFS?

我希望用戶能夠進行身份驗證,我已經在單獨的機器上安裝了ThinkTecture AuthorizationServer,並且在域控制器上運行了ADFS實例。目前,我正在使用ADFS提供的Web頁面進行登錄,但如果我可以使用自己的頁面,它會詢問用戶名/密碼組合,將它傳遞給AuthorizationServer/ADFS,然後使用之後的認證令牌。

有沒有人做過類似的事情?

問候, 丹尼爾

+0

您有沒有針對您的問題採取任何解決方法?請分享您的解決方案,因爲我需要解決類似的問題。 –

+0

我做了以下事情: - 在我的API中添加了一個/ login端點,用戶可以POST(通過SSL,因此用戶名/密碼不是以明文形式發送) - 在我的API中使用Thinktecture.IdentityModel庫項目連接到授權服務器(使用代碼流)。代碼如下所示: ' \t VAR的客戶=新OAuth2Client( \t \t新的URI(終點), \t \t的clientId,祕密); \t LoginResponse response = null; \t AccessTokenResponse tokenResponse = null; \t嘗試 \t { \t \t tokenResponse = client.RequestAccessTokenUserName(data.user,data.pass, 「讀出」); \t} \t趕上(異常前) \t { \t \t \t} ' 它的工作原理... – dabs

+0

很抱歉的格式,它變得有點失控了...... – dabs

回答

3

事實上,你的用戶會登錄您的SPA,那麼你有一個服務器端(Java或.NET或*)認爲得到這個請求。

服務器向ADFS詢問令牌,ADFS發送令牌並且您的服務器將令牌傳遞給AngularJS,並在響應中通過cookie。

在角側無關預期的HTTP攔截檢查響應(401,403)的狀態...

的cookie將被自動AngularJS在每個請求,如果你想知道如何實現的怨恨在AngularJS htppInterceptor只檢查:

AngularJs -.net MVC WebApi Authentication example

在這個線程我將解釋如何實現這一步。

無論如何:您的SPA是一個RIA ok,但仍然是webapp的客戶端部分。我認爲讓客戶直接與ADFS聯繫是不是很好(我認爲這真的很糟糕)......如果你這樣做,如何防止中間人(Man-In-the-Middle)?

+0

聽起來很有趣。 Web API項目能夠處理登錄請求嗎? – dabs

+0

對我來說,這不是真正的標準,但登錄頁面是一個經典的MVC頁面,然後當你在SPA登錄你! –

+0

無論如何,我可以舉一個例子,如果你想要在SPA一側的登錄 –

相關問題