假设我们使用OAuth承载令牌来保护API。有一个带有OWIN中间件的NuGet包可以为我们做到这一点:https://www.nuget.org/packages/Microsoft.Owin.Security.OAuth.
Everethig看起来很棒,直到提出访问令牌过期的问题——我们不想强迫用户一次又一次地重新登录。据我所知,有三种基本方法:
我很好奇是否有可能创建需要即将过期的访问令牌的endpoint,并使用新的访问令牌来模拟OAuth访问令牌的滑动过期?
警告!如果您不能100%确定您的应用程序保证(这是不可能的)无法计算Access Token(例如,XSS漏洞允许窃取Access Token),则没有人应该使用这个解决方案。在这个解决方案中,一旦Access Token泄露,它就可以用来无限期地延长访问时间。OAuth刷新令牌正好解决了这个问题,在非常短的时间内(通常大约15分钟)危及Access Token的情况下限制访问。
[Authorize]
public class RefreshTokenController : ApiController
{
[HttpGet]
public HttpResponseMessage ReissueToken()
{
// just use old identity
var identity = ((ClaimsPrincipal)User).Identity as ClaimsIdentity;
var ticket = new AuthenticationTicket(identity, new AuthenticationProperties());
DateTimeOffset currentUtc = new SystemClock().UtcNow;
ticket.Properties.IssuedUtc = currentUtc;
ticket.Properties.ExpiresUtc = currentUtc.AddMinutes(30);
string token = Startup.OAuthBearerAuthOptions.AccessTokenFormat.Protect(ticket);
return new HttpResponseMessage(HttpStatusCode.OK)
{
Content = new ObjectContent<object>(new
{
accessToken = token,
expiresIn = (int)((ticket.Properties.ExpiresUtc.Value - ticket.Properties.IssuedUtc.Value).TotalSeconds),
}, Configuration.Formatters.JsonFormatter)
};
}
}
本文向大家介绍oauth 刷新访问令牌,包括了oauth 刷新访问令牌的使用技巧和注意事项,需要的朋友参考一下 示例 资源
null 很抱歉太啰嗦了。 提前谢了。
我正在尝试在ASP.NET5中实现OAuth承载令牌身份验证,并且正在努力寻找一个如何实现这一点的示例,因为OWIN的东西在ASP.NET5中发生了变化。 例如IApplicationBuilder.UseOAuthAuthorizationServer()和IApplicationBuilder。UseOAuthBearerAuthentication()要么不再存在,要么缺少引用? 如有任何指
在一个脚本中,我试图用oauth令牌克隆Github存储库。 根据本教程: https://github.com/blog/1270-easier-builds-and-deployments-using-git-over-https-and-oauth 我应该能够像这样为它构建一个命令: 如果我使用正确的访问令牌手动尝试此操作,它仍会询问我的密码。 如果我在命令行上尝试它,我只是得到一个没有找到
我遇到了很多文章,很多文章建议使用OAuth over API密钥。据我所知,在OAuth中,我们最终获得了访问令牌,它的有效期为很多天。例如,QuickBooks online OAuth令牌的有效期为6个月。 因此,访问令牌等同于API Key。无论谁得到它,都应该像API密钥一样保护它。OAuth调用应该通过HTTPS进行,类似于基于API Key的调用。 相对于OAuth的另一个优势是授权
我知道有些人会发表评论,比如这篇文章重复了很多问题,但是我已经尝试了很多方法来在领英Oauth中实现访问令牌。解释我所尝试的。 1)我正在关注它的官方文档LinkedIn Oauth2 2) 我已成功从步骤 2 获取授权代码,并将该代码传递给步骤 3,以交换身份验证代码以获取访问令牌。但是我收到以下错误{“error_description”:“缺少必需参数,包含无效的参数值,参数不止一次。 :无