我有一個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