我有一个Web应用程序的API,正是如此初始化:身份验证,不需要JavaScript?
app.UseCookieAuthentication();
app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);
app.UseOAuthBearerTokens(OAuthOptions);
app.UseGoogleAuthentication();
对于打给大多数控制器,它的伟大工程。然而,它也需要一些JavaScript客户端服务调用才制成:
function getSecurityHeaders() {
var accessToken = sessionStorage["accessToken"] || localStorage["accessToken"];
if (accessToken) {
return { "Authorization": "Bearer " + accessToken };
}
return {};
}
的问题是,我们有一定类型的控制器在没有JavaScript可以在运行(一个访问的文件)呼叫。例如,该呼叫可以是:
http://mysite/mycontroller/file/filename.jpg
...其中值被指定为img标记的src属性。该调用有效,但Thread.CurrentPrincipal.Identity未用空名称进行认证,所以目前还没有一种强制执行安全措施的方法。
我是新来的Web API,所以它可能是一个愚蠢的问题,但这是怎么回事?我需要翻转哪些开关以便不需要JavaScript来添加安全标头?我正在考虑试图找到一种方法来强制IAuthorizationFilter中的授权头或其他东西,但我甚至不确定这会起作用。
好像你在同一个项目中合并了两种类型的控制器(经典的MVC和WebAPI)。 你用什么来验证你的JavaScript运行的页面? –
这些页面本身或者不需要认证或者使用Angular JS,我认为这只是通过JavaScript来检查认证。 – Colin