- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在我的应用程序中使用 Spring Security Oauth2 作为安全层。一切运行良好,直到同时出现异步调用。
有人可以告诉我如何处理下一个案例:
1. 客户端有一个已经过期的accessToken。
2. 客户端对我的 api 进行了两个并发的异步 api 调用(例如:Thread1、Thread2)。
3. Thread1 在 Thread2 之前收到错误:“accessToken expired”。
4. 通过使用refreshToken Thread1 接收到一个新的accessToken = qqqqq。
5. 在 Thread1 使用新的 accessToken = qqqqq 对服务器进行新调用之前,Thread2 收到错误:“accessToken expired”。
6. 通过使用 refreshToken Thread2 接收一个新的 accessToken = wwwww 并删除 accessToken = qqqqq 。
7. 这里,Thread1 使用未激活的 accessToken = qqqqq 调用服务器。
8. 理论上,很有可能通过使彼此无效来循环两个线程。
我将不胜感激任何帮助,谢谢。
最佳答案
如果您可以控制客户端,那么您可以将版本号附加到访问 token - 如果线程尝试使用旧版本号刷新访问 token ,则返回当前(最近刷新的)访问 token 。
public class AccessToken {
private int currentVersion;
private String accessToken;
private static AccessToken currentToken;
public static synchronized AccessToken refresh(AccessToken token) {
if(token.currentVersion == currentToken.currentVersion) {
AccessToken newToken = // refresh token
newToken.currentVersion = currentToken.currentVersion + 1;
currentToken = newToken;
}
return currentToken;
}
}
关于multithreading - Oauth2;如何解决同时进行的多个异步 api 调用期间 AccessToken 过期的问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30506983/
在讨论实际问题之前 好吧,我已经创建了自己的身份验证系统,并将在我的 API 上使用它。 简单解释: 上/signup用户输入用户名、密码等... API 授予用户 tokens它们存储在数据库中的用
如何从下面的匿名内部类获取accessToken?当我尝试在类外部使用 accessToken 时,它显示为 null。我试图在关闭内部类后立即使用 accessToken 显示一个 toast,但它
所以,标题是一个问题。尝试从环回应用程序生成 Angular 服务,但出现此错误 正在加载 LoopBack 应用程序“xxx\\server\\server.js” 为 API 端点“/api”生成
我正在尝试使我的应用程序的 web 版本在 flutter 中可用。在移动版本中,无论是 android 还是 ios,使用 google 凭据登录都可以完美运行。在 web flutter 中,我正
我在基于 scala play 框架的 Web 应用程序中使用 aws cognito 作为用户管理解决方案。我正在使用以下代码登录。 var mIdentityProvider: AWSCognit
我正在尝试使用 Microsoft.Azure.Management.Resources 库来管理一些 Azure 资源。我已在 Azure AD 中注册了应用程序,并授予了它所有权限。我获取了它的
如何为 StrongLoop API 创建永久访问 token 。现在,对于每个用户登录,它都会创建一个访问 token 。和我的数据库中不必要的条目 我可以增加访问 token (ttl)的有效性,
我使用的是azure signalR,生成的accesstoken非常大,因为用户所在的广告组列表非常大。我错过了什么吗?有人可以帮助我吗? 详细说明:我使用 azure signalR 创建了一个推
我正在开发一个 oAuth2 服务器,我偶然发现了这个问题。 让我们假设一个场景,我的 token 设置为在一小时内过期。在此时间范围内,某些客户端使用相同的 client_id 和相同的 redir
我正在使用restfb-1.6.12,并且在使用以下代码时遇到了错误“AccessToken无法解析为类型”的一些问题: import com.restfb.DefaultFacebookClient
我使用的是azure signalR,生成的accesstoken非常大,因为用户所在的广告组列表非常大。我错过了什么吗?有人可以帮助我吗? 详细说明:我使用 azure signalR 创建了一个推
是否有机会使用 accessToken 登录谷歌驱动器。我有用户 帐户刷新 token 和 accessToken 我需要用它们登录。 最佳答案 刷新 token (或访问 token )仅向授予它的
我有一个带有两个按钮的简单 View Controller 。第一个是我使用 获得的官方 Facebook 登录按钮 let loginButton = FBSDKLoginButton() 顺便问一
我已将 session 更改为访问 token ,但它无法解析 getCurrentAccessToken 和 isOpened 的方法 // Fetch Facebook user info if
本月,Facebook删除了“ offline_access”权限。 如何扩展或要求新的访问令牌? 我应该像在facebook.authorize之前那样使用吗?但是在这种情况下,用户希望再次看到登录
我有一个 Facebook session 。但它没有打开。我尝试如下获取AccessToken Session.getActiveSession().getAccessToken(); 但它不返回任
我正在尝试创建 AccessToken 的实例,但它引发了异常消息。我有两种生成 AccessToken 的方法。我的工作流程是,在 android 机器上,我使用 Oauth 对用户进行身份验证,然
我正在使用 auth0 和 nextJS。 我接下来要做的是:当用户添加他的凭据并登录时,他将被重定向到 callback API。 这里 import auth0 from '../../u
我一直在使用旧的Facebook SDK,并将accessToken和expirationDate保存在NSUserDefaults中。但是现在在新的Facebook SDK 3.2中有一个名为FBA
我正在使用 the official Cordova Facebook plugin在我的移动应用程序中实现 Facebook 登录。几天来我一直在尝试使以下代码正常工作,但我不知道问题出在哪里。我只
我是一名优秀的程序员,十分优秀!