我设计了一个依赖于大型生态系统的移动应用程序(现在是Android)。
我的一个主要组件是Auth系统,我使用IdentityServer3构建它。
现在,对于用户通过移动应用程序登录,我使用了OAuth2隐式流程,因此我打开了服务器端网页,该网页获取并验证用户凭据,然后生成id_token和access_token,因此我不知道用户密码是否为客户端侧。
现在,我想实现另一个功能,即用户之间的实时聊天。
我检查了很多解决方案,但是每个人都有一个安全漏洞,这可能导致该功能出现在不需要的场景中。
例如:
QuickBlox云彩服务(我不了解企业on-primes one)创建用户然后使用用户使用用户名和密码登录创建会话所需。
QBAuth.createSession(new QBUser("user", "pass"), new QBEntityCallback<QBSession>() {
@Override
public void onSuccess(QBSession session, Bundle params) {
// success
}
@Override
public void onError(QBResponseException error) {
// errors
}
});
所以它有自己的UserStore,它与我的中心Auth服务是分开的,所以我考虑创建一个带有一层安全性的虚拟密码,比如创建一个定义明确的密码
UserName@ServerSideSecretKey
但这不是我应该继续的方式,因为我应该依赖我的Central Auth服务并且只生成令牌,然后将其传递给QuickBlox以通过我的Auth UserInfo端点识别我的用户。
是否允许我将QuickBlox与我的Auth服务集成?
我在文档中找到了这一行:
也可以使用现有的QuickBlox初始化SDK 令牌。在构建大型系统的情况下,这可能很有趣 你有一个生成QuickBlox令牌的自定义服务器端:
try {
QBAuth.createFromExistentToken("31ed199120fb998dc472aea785a1825809ad5c04", date);
} catch (BaseServiceException e) {
e.printStackTrace();
}
但我不明白这将如何运作或如何允许QuickBlox验证我生成的OAuth2令牌。
在Firebase中,我知道我可以生成JWT令牌,然后根据我的firebase服务验证它,所以我应该将我的IdentityServer令牌生成行为更改为JWT,然后根据我应用的Firebase密钥验证它?
那么如何在隐式流的身份服务器中做到这一点呢?或者还有其他解决方案吗?