我試圖在特定的API控制器與/api/ext
開始使用HMAC驗證,所以我說這些配置上啓動類asp.net核心認證
app.Map("/api/ext", builder =>
{
builder.UseHmacAuthentication(new HmacAuthenticationOptions
{
SecretKey = "abc670d15a584f4baf0ba48455d3b155",
AppId = "jDEf7bMcJVFnqrPd599aSIbhC0IasxLBpGAJeW3Fzh4=",
AutomaticAuthenticate = true
});
builder.UseMvc();
});
但是當我發送請求我得到404沒有發現錯誤,但是當我刪除上面的代碼它擊中控制器的行動。我錯過了什麼?
UPDATE
最後我想出了這個
bool IsApiRequest(HttpContext context) => context.Request.Path.ToString().StartsWith("/api/ext/");
app.UseWhen(IsApiRequest, builder =>
{
builder.UseHmacAuthentication(new HmacAuthenticationOptions
{
SecretKey = "abc670d15a584f4baf0ba48455d3b155",
AppId = "jDEf7bMcJVFnqrPd599aSIbhC0IasxLBpGAJeW3Fzh4=",
AutomaticAuthenticate = true
});
builder.UseMvc();
});
似乎現在的工作(驗證正確和命中控制器動作)
然後控制器動作public async Task<IActionResult> Test([FromBody] ApiIdentityUser model)
模型變得無效,但是當我刪除中間件身份驗證獲取值.. 任何想法?
更新2
,所以我在這裏是我的另一個交替,發現一些有趣的事情,我增加身份驗證模塊,中間件這樣
app.UseMiddleware<HmacAuthenticationMiddleware>(Options.Create(new
HmacAuthenticationOptions
{
SecretKey = "abc670d15a584f4baf0ba48455d3b155",
AppId = "jDEf7bMcJVFnqrPd599aSIbhC0IasxLBpGAJeW3Fzh4=",
AutomaticAuthenticate = false,
AutomaticChallenge = false
}));
我仍然得到了錯誤的話,我取出
Options.Create(new HmacAuthenticationOptions
{
SecretKey = "abc670d15a584f4baf0ba48455d3b155",
AppId = "jDEf7bMcJVFnqrPd599aSIbhC0IasxLBpGAJeW3Fzh4=",
AutomaticAuthenticate = false,
AutomaticChallenge = false
})
從上面的代碼,並在實施級別設置鍵然後它的工作,但爲什麼?
你在調用'app.UseIdentity()'嗎? – Ozgur
@OzgurGUL在使用'app.Map(「/ api/ext」)之前,我正在調用'app.UseIdentity()' – Gayan