我使用oidc-client-js库来处理来自angular应用程序的IdentityServer4实现的OIDC重定向单点登录风格的身份验证。应用程序中的IdToken/Cookie适用于1+ days。访问令牌的生命周期较短,并且执行静默刷新。有时,应用程序会保持正常运行,而用户不必再次登录,这是我们想要的,但由于敏感数据,我们可能希望在应用程序中的特定区域验证用户的身份。
我看到,通过让应用程序再次询问密码并执行ResourceOwner授权样式的密码验证来实现这一点,该库还不支持。我不介意使用现有的带有强制登录提示请求设置的popUpRedirect。我被困住的是,我看不到任何地方(至少有记录)上一次用户登录的时间戳发生在哪里。例如。如果用户在最近5分钟内登录,则可以访问敏感数据。
在每个人都加入之前,我并不是在寻找访问令牌的时间戳或过期时间。我们的访问令牌在没有用户干预的情况下被静默刷新,所以这没有帮助。我是否要在IdToken上查找时间戳?这个库公开了吗?或者我对这个过程的理解是完全错误的?提前谢谢。
发布于 2018-12-19 18:51:39
auth_time声明是您需要验证交互式身份验证上次发生的时间。它同时存在于id_token和access_token中,因此它应该足够容易让客户端检查它是否足够新(如果不是,则触发一个prompt=login请求),并让您在敏感的后端API中断言它是否足够新。
https://stackoverflow.com/questions/53841013
复制相似问题