我在ASP.NET MVC應用程序中使用OWIN Oauth爲移動應用程序提供訪問令牌。以下是OAuth的設置:OWIN Oauth區分過期和無效令牌
app.UseOAuthAuthorizationServer(new OAuthAuthorizationServerOptions
{
TokenEndpointPath = new PathString("/api/authenticate/login"),
Provider = dependencyContainer.GetService<IOAuthAuthorizationServerProvider>(),
RefreshTokenProvider = dependencyContainer.GetService<IAuthenticationTokenProvider>(),
AccessTokenExpireTimeSpan = TimeSpan.FromMinutes(applicationSettings.AccessTokenLifeTimeInMinutes),
AllowInsecureHttp = true
});
app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions());
我也有自定義提供程序和自定義刷新令牌提供程序,如上所示。一切工作正常,在從移動的請求已過期或無效,我使用自定義AuthorizeAttribute與消息中的一個場景「未經授權」
public class ApiAuthorizeAttribute : AuthorizeAttribute
{
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
filterContext.Result = new JsonResult
{
Data = new
{
success = false,
error = "Unauthorized"
},
JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
}
}
但是返回一個JSON,移動應用程序需要區分服務器對2種情況的響應:訪問令牌已過期,或者訪問令牌無效(在中間修改.eg)。我不確定我如何實現這一要求。我試圖創建一個自定義的訪問令牌供應商,從AuthenticationTokenProvider繼承,在UseOAuthAuthorizationServer註冊它()以上,但兩者接收()和ReceiveAsync()當服務器接收到來自移動
我們可以在響應正文中返回錯誤消息嗎? –
@BuiQuangHuy是的,在CustomAccessTokenProvider中,您可以訪問context.Response,因此您可以對響應流進行任何操作 –