繁体   English   中英

使用 Auth0 自定义域时,前端从 Auth0 获取的访问令牌对后端不起作用

[英]Access token obtained from Auth0 by front-end not working against backend Web API, when using Auth0 custom domain

我们有一个 Angular 10 前端 web 应用程序,带有 a.Net 6 后端 Web ZDB9474A.78D104ADE1 我们使用 Auth0 作为身份验证提供者。

我们一直有一些客户抱怨(主要是在 Safari 浏览器上)由于跨站点跟踪被禁用,他们无法登录我们的应用程序。 如果我们为用户启用它,那么它就可以工作。 显然,这不是一个可接受的解决方案。 我读到这是因为 Auth0 与 web 应用程序位于不同的域上,并且使用 Auth0 自定义域会有所帮助,因为我们可以使我们的前端、后端和 Auth0 都在同一个域上 -不再跨越域边界。 所以我们升级到了付费的 Auth0 许可证,并激活了自定义域。

但是,当用户现在登录我们的应用程序,并且用户被转发到 Auth0 登录页面(使用新的自定义域)时,前端从 Auth0 接收到的访问令牌似乎不起作用,就像当前端尝试使用此令牌调用 API,它收到 401 Unauthorized 响应。

据我所知,当我们切换到使用 Auth0 自定义域时,后端 API 无需更改任何内容。 唯一需要更改的是前端 Angular 应用程序,我们必须在其中更新“域”以指向新的自定义域。

我还在 Auth0 的“允许的回调 URL”、“允许的注销 URL”和“允许的 web 来源”上将新的自定义域 URL 列入白名单,以防万一。

此外,我也尝试在 API 上将 services.AddAuthentication().AddJwtBearer() 的“Authority”选项更新为新的 Auth0 自定义域:

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddAuthentication(options =>
        {
            options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
            options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
        }).AddJwtBearer(options =>
        {
            options.Authority = $"https://{Configuration["Auth0:Domain"]}/"; 
            options.Audience = Configuration["Auth0:Audience"];
        }
        ...
    }
}

我在 appsettings.json 中更新了 Auth0:Domain 以引用新的 Auth0 自定义域。 但这并没有什么不同。

知道为什么前端在尝试调用它时会收到来自我们的 API 的 401 Unauthorized 响应,如果使用自定义 Auth0 域? (但在使用非自定义 Auth0 域时工作正常)?

谢谢

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM