我有一个ASP.net MVC Web应用程序,该应用程序使用Microsoft的Owin中间件(Microsoft.Owin.Security.OpenIdConnect)来配置OpenID Connect身份验证。我的身份提供者(Okta)配置为支持刷新令牌,并且我已经确认它可以正常工作。登录时,我的应用程序将按预期接收访问,ID和刷新令牌。这些令牌经过验证,并通过名为“ .AspNet.Cookies”(默认值)的cookie返回给客户端。在每个请求中,cookie和这些令牌都被解析为一组声明。到目前为止很好。 ?
Owin(Katana)中间件似乎对刷新令牌没有做任何进一步的事情,因此我实现了令牌客户端,以使用刷新令牌从我的IdP请求新的访问令牌。这按预期工作。 ?
两个问题:
答案 0 :(得分:1)
OOK COOKIE更新
我相信this post结尾处的注释具有您可以编写的代码类型-我记得几年前使用过类似的代码。
在OWIN中,您使用的是由Cookie保护的服务器端堆栈,因此我不确定实际在何处使用访问令牌,但是也许其中之一是正确的?
处理过期令牌的方式
处理过期的唯一可靠模式是在API客户端代码中执行此操作:
我总是用2个类来实现它,就像我的SPA代码中一样:
如果Web UI是从Web后端获取令牌然后调用API,则您的Web后端可以提供类似于我的Authenticator类中的MVC操作:
令牌有效时间
还可以在后台检查令牌到期时间-减少客户端401s的数量。但是,这并不是一个完整的解决方案,因为除到期日外,还可能由于其他原因而出现401。