我有一个网页(Angular),它验证用户,在登录(OAuth2)后,用户有一个选项来与机器人交互(机器人框架v4 C#),因为现在我有机器人独立,因此已经使用机器人中的OAuthCard来验证用户。
现在我想要单点登录。我不确定用户令牌将如何从网页传递到机器人,我现在有两个场景确定哪一个是正确的: 1.发送每条消息的用户令牌,需要对每条消息进行验证,计算太多。2.发送带有TTL的token,并处理过期。
但现在,我不确定如何将令牌从网页发送到C#应用程序。
我确实通过了this,正如它所说的
“第三个选项,称为单点登录(单点登录),正在开发中,即客户端UI获取客户端应用的客户端用户令牌,并将其交换为一个不同的令牌,该令牌可用于相同的身份提供商,但不同的应用/作用域。目前,可以使用上面的技术#1使用WebChat创建类似的用户体验。”
而且文档看起来有点太稀疏了,无法理解它是如何使用技术#1完成的
发布于 2019-02-13 00:26:56
我同意,这篇博客文章相当令人困惑,我仍然不知道他们最终打算为他们所描述的“单点登录场景”做什么。他们描述的与简单地将SPA中的令牌交给机器人的主要区别是,他们将为机器人所需的一组不同的作用域与SPA进行某种令牌交换。这当然是有用的,但是,到目前为止,这都是“空谈”,我不知道他们已经构建了什么来实现它。
让我先快速地回答你的两点..
首先,我敢说,在这一点上,大多数网络都是建立在令牌交换的基础上的。令牌需要不断地传递,验证签名,然后检查是否过期。这只是身份验证的本质;我不认为这是机器人特有的问题。
你在使用JWTs吗?他们通过标准的exp声明内置了TTL,所以你不需要担心发明自己的TTL。是的,您确实需要检查过期时间。
好吧,也就是说,如果您担心不断将令牌传递给机器人的开销,您可以选择在DirectLine连接上通过自定义的“反向通道”事件发送一次令牌。然后,您的机器人可以获取该令牌,验证它一次,并将其与会话状态相关联,这样客户端就不必在每次请求时都发送它。但是,请记住,您仍然需要不断验证令牌是否过期。
这个反向通道事件和它的处理将是完全专有的(例如,现在没有任何东西可以为你做这件事)。就像你有一个从客户端到机器人的事件来发送令牌一样,你也可以有一个从机器人到客户端的事件,告诉它需要来自客户端的令牌(例如,第一个请求,或者因为过期而刷新了一个)。
https://stackoverflow.com/questions/54643506
复制相似问题