首页 > 解决方案 > Microsoft 身份平台 (AAD v2.0) 保护的 Azure AD B2C API - 过期的访问令牌在重新启动之前有效

问题描述

我有一个受 Microsoft 身份平台 (AAD v2.0) 保护的 API,但是虽然我已将访问令牌配置为在 B2C 登录用户流中具有 5 分钟的生命周期,但我可以在访问令牌过期后成功使用它。

我有这样的设置:

            services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
                    .AddMicrosoftIdentityWebApi(options =>
            {
                Configuration.Bind("AzureAdB2C", options);

                options.TokenValidationParameters.NameClaimType = "name";
            },
            options => { Configuration.Bind("AzureAdB2C", options); });

            services.AddControllers();
            services.AddAuthorization(options =>
            {
                // Create policy to check for the scope 'user_access'
                options.AddPolicy("UserAccess",
                    policy => policy.Requirements.Add(new ScopesRequirement("user_access")));
            });

控制器受以下属性保护:[Authorize]

我使用 Postman 和标题调用控制器 GET 方法Authorization: Bearer <access token>

我使用(省略参数)获取访问令牌:

GET https://{tenant}.b2clogin.com/{tenant}.onmicrosoft.com/{policy}/oauth2/v2.0/authorize?

我使用以下方法获取访问令牌:

POST https://{tenant}.b2clogin.com/{tenant}.onmicrosoft.com/{policy}/oauth2/v2.0/token

expires_in字段正确显示 5 分钟。登录策略与用于 API 设置的相同。

如果我在访问令牌过期之前重新启动 API,我可以继续使用它。如果我在 API 过期后重新启动它,它会在重新启动后停止工作。如果我不重新启动它只会继续工作。

这是在调试和本地主机中。

我本来希望访问令牌一旦过期就会被 API 拒绝。我错过了什么?

标签: azure-ad-b2cmicrosoft-identity-platform

解决方案


推荐阅读