[英]AngularJS SPA with WebAPI and MVC application . How to setup Authorization with OWIN
我是AngularJS和WebAPI的新手,我希望為我的組織創建SPA模板,該模板將成為制作快速SPA的樣板,其中包括:
在startup.Auth.cs中。 我正在使用以下授權選項:
app.UseCookieAuthentication(new CookieAuthenticationOptions());
app.UseOAuthBearerTokens(OAuthOptions);
我創建了一個小圖來解釋數據流
目前,WebAPI和MVC控制器將位於1層,但體系結構應允許將它們分開。
現在,我的問題是
[Authorize]屬性檢查是否在MVC和Web API都使用的Request對象上設置了IsAuthenticated屬性。 該屬性由身份中間件設置,如您在startup.cs文件中配置的那樣。
每個請求在到達MVC或Web API控制器之前都要經過OWIN中間件管道。 然后,中間件可以更改甚至完全處理該請求。 本質上,MVC和Web API本身也是中間件,他們說:“嘿,如果此url請求與該路由匹配,我會處理的。” ASP.NET Identity是一種中間件,它不會完成請求,但是會在將其傳遞到管道之前對其進行更改。 它檢查請求中提供的憑據(在您的情況下,以Web API的承載令牌形式或MVC的cookie形式)。 如果找到它們,則將身份驗證詳細信息添加到請求對象,然后由Web API或MVC將該身份驗證詳細信息用於進行[Authorize]檢查。
您的應用僅接受自己發出的令牌的原因是,它使用僅應用本身知道的密鑰進行了加密。 如果您打算接受從其他應用程序加密的令牌,則這些應用程序應使用相同的私鑰進行加密。 您可以在web.config中配置這些密鑰。 注意不要丟失這些密鑰(例如,不要將具有這些詳細信息的web.config添加到git存儲庫中)。 另外,您可以設置一個單獨的授權服務器,該服務器在依賴它的不同應用程序之間進行中介。
希望這可以幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.