我的应用通过 Microsoft 帐户对用户进行身份验证:接受个人和企业 (Azure AD) 帐户。身份验证通过 .NET AspNetCore.Authentication.OpenIdConnect
中间件执行。请求 OIDC 范围和一些与 MS Graph 相关的范围。返回的访问和刷新令牌被存储以供离线使用。
超时,由于各种原因,他们存储的访问令牌中的一些有效范围可能不再与我们实际需要的范围保持同步。我们需要一种方法来验证/审核用户访问令牌包含的有效范围。
对于 Azure AD(企业)用户,Microsoft Identity Platform 返回的访问令牌是 JWT 令牌。它包含一个 scp
声明,其中列出了令牌的确切有效范围,我们可以轻松验证。
但我发现使用个人 Microsoft 帐户(outlook.com、live.com 等)时,访问令牌不是 JWT 且无法解码。
有没有办法根据 Microsoft IDP 或 Graph API(类似于 Google IDP 的 TokenInfo
端点)检查此类令牌?
如果没有,有没有办法在中间件级别捕获范围?由于我们使用代码流,中间件控制器只从 id_token
获取声明,其中不包括与作用域相关的声明,所以我认为这是不可能的。
任何帮助将不胜感激。