[英]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.