我创建了一个针对.NET Framework 4和Silverlight 5的PCL项目(我使用Visual Studio 2010的扩展,而不是Visual Studio 2012的可移植项目模板,如果这很重要).我试图使用System.Linq.Enumerable.Reverse<TSource>()扩展方法反转字符串,但它不起作用,因为编译器认为System.String没有实现IEnumerable<char>.
我正在根据OAuth 2.0构建授权服务器.
还有一个使用我的授权服务器的第三方Web应用程序(客户端).它是一个常规的Web应用程序,用户可能会使用此应用程序建立多个活动会话(例如,办公室和家庭计算机,或同一台计算机上的几个Web浏览器).
我的授权服务器为客户端发出一次访问令牌#1(带或不带刷新令牌,这在此处并不重要).当用户与客户端启动新会话时,授权服务器是否应该为客户端应用程序提供该新会话的相同访问令牌#1,还是应该发出新的#2令牌?
我的想法:
从安全的角度来看,新令牌可能听起来更好,但如果用户想要管理他的授权,他将看到每个客户端会话的单独条目,这可能是混乱的.
例如,GitHub为以前授权的客户端返回相同的令牌,在我的GitHub帐户的"应用程序"页面上,我看到每个应用程序只有一个条目,无论我启动了多少个会话,这很方便.
但是,这种方法意味着我必须以可逆方式(纯文本或使用某些已知密钥加密)在授权或资源服务器中存储访问令牌,而不是使用不可逆的散列(就像您通常使用密码,存储salt和密码哈希)来自bcrypt,pbkdf2或类似的东西).