共享 RestAPI 令牌的模式是啥?

Posted

技术标签:

【中文标题】共享 RestAPI 令牌的模式是啥?【英文标题】:What's the pattern for sharing a RestAPI token?共享 RestAPI 令牌的模式是什么? 【发布时间】:2020-09-14 10:48:51 【问题描述】:

我应该如何在多个类中存储和重用 restAPI 授权令牌?

我正在使用一个 RestAPI,我的登录代码需要一个用户、密码和服务器,然后返回一个身份验证令牌。该登录代码位于我的所有 RestAPI 调用的通用基类中,它工作正常。但是每个新对象都不知道令牌,因此必须重新授权。我需要它们在生成后共享相同的令牌。我不能使用单例,因为我可能必须在同一个会话中使用多个不同的用户登录。

我确定有一个模式,但我找不到,你能帮忙吗?

【问题讨论】:

【参考方案1】:

您需要的是缓存。登录服务可以是缓存访问令牌的单例,您可以使用并发字典来实现访问令牌缓存。

类似这样的:

public class LoginService


    private ConcurrentDictionary<string, string> accessTokenCache = new ConcurrentDictionary<string, string>();

    private string callServerLogin(string user, string password)
    
        throw new NotImplementedException();
    

    public string Login(string user, string password)
    
        var accessToken = callServerLogin(user, password);
        accessTokenCache[user] = accessToken;
        return accessToken;
    

    public bool TryGetCachedAccessToken(string user, out string accessToken )
    
        return this.accessTokenCache.TryGetValue(user, out accessToken);
    


【讨论】:

以上是关于共享 RestAPI 令牌的模式是啥?的主要内容,如果未能解决你的问题,请参考以下文章

防止令牌共享的最佳方法是啥?

JWT:使用 grant_type=password 时刷新令牌的优势是啥

保护 REST API 的最佳方式是啥? [关闭]

具有匿名/识别访问的 REST API 的最佳 URI 模式是啥?

共享模式在共享访问中是啥意思?

使用 JWT 安全令牌访问 REST API