【发布时间】:2015-09-07 18:53:24
【问题描述】:
我为移动应用解决方案构建了一个 MVC 后端。认证通过 OWIN 和 OAuth 2.0 实现。验证令牌后,从我的服务器中提取,工作正常。但是在我的应用程序中闲置几分钟后,每个电话都会以“401,未经授权”应答。
public void ConfigureAuth(IAppBuilder app){
app.CreatePerOwinContext(ApplicationDbContext.Create);
app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);
app.UseCookieAuthentication(new CookieAuthenticationOptions());
app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);
PublicClientId = "self";
OAuthOptions = new OAuthAuthorizationServerOptions
{
TokenEndpointPath = new PathString("/Token"),
Provider = new ApplicationOAuthProvider(PublicClientId),
AuthorizeEndpointPath = new PathString("/api/Account/ExternalLogin"),
AccessTokenExpireTimeSpan = TimeSpan.FromDays(14),
AllowInsecureHttp = true,
AuthenticationMode = Microsoft.Owin.Security.AuthenticationMode.Active
};
app.UseOAuthBearerTokens(OAuthOptions);
}
我的理解是,令牌应该在 14 天后过期,而不是几分钟后。
谁能帮我解决这个问题?
【问题讨论】:
-
你是否为每次调用 web api 注入了不记名令牌?
-
是的,我会在每次通话时发送。
-
出于好奇,您使用的是哪个主机? IIS?如果是,这可能与数据保护器问题有关。确保在 web.config 中配置静态机器密钥。
-
您好!我在 web.config 中添加了一个机器密钥,它就像一个魅力。谢谢!但奇怪的是,我没有使用服务器基础架构。
-
@user1705545 你知道为什么在 web.config 中设置静态机器密钥有效吗?
标签: c# asp.net-mvc rest oauth owin