我們有一個Web API 2 REST服務。我們使用基本的OWIN oAuth令牌認證,我們需要https。我們添加了一個RequireHttpsAttribute過濾器,用於在使用基本http進行請求時檢查並返回一個403 HTTPS Required錯誤。Web API,當/令牌調用不安全時返回403
問題是我們的/令牌請求。當我們請求我們的令牌時,我們不會返回403錯誤。在Startup.Auth.cs配置文件中,我們設置了AllowInsecureHttp = false。因此,這可以防止用戶通過不安全的呼叫請求令牌。
但是,當進行此調用時,我們會得到404 Not Found錯誤,而不是我們想要的403 HTTPS Required。任何人都可以幫我弄清楚如何解決這個錯誤?
我知道我們沒有使用RequireHttpsAttribute,因爲這是普通身份驗證之外的偶然符號,這就是我們如何獲得該身份驗證的令牌。所以我不確定我應該在哪裏檢查安全連接。我在GrantResourceOwnersCredentials方法中的AuthenticationOAuthProviders類中嘗試過。在對用戶名和密碼進行身份驗證之前,我對https進行了檢查,但無法從此處引發HTTP代碼錯誤。
我可以在GrantResourceOwnerCredentials動作識別請求是否安全使用context.Request.Uri.Scheme,它允許我做一個context.setError(「HTTPS必需「,」請求的HTTP需要「),但它仍會作爲錯誤400錯誤請求返回。我嘗試了context.Response.StatusCode = 403,但它似乎忽略了這一點。 –