Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core NetCore中OAuthOptions上回调路径的通配符_Asp.net Core_Oauth - Fatal编程技术网

Asp.net core NetCore中OAuthOptions上回调路径的通配符

Asp.net core NetCore中OAuthOptions上回调路径的通配符,asp.net-core,oauth,Asp.net Core,Oauth,我想知道是否有任何方法可以指定回调路径,允许URL中使用通配符占位符,例如租户名称 CallbackPath = new PathString(@"/*/Authentication/"); 或者在整个项目中我们称之为tenantId endpoints.MapControllerRoute( name: "SignInCallback", //pattern: "signin/{tenantId}", WORKS

我想知道是否有任何方法可以指定回调路径,允许URL中使用通配符占位符,例如租户名称

CallbackPath = new PathString(@"/*/Authentication/");
或者在整个项目中我们称之为tenantId

endpoints.MapControllerRoute(
                name: "SignInCallback",
                //pattern: "signin/{tenantId}", WORKS
                pattern: "{tenantId}/Authentication/", DOES NOT WORK
                defaults: new { controller = "Home", action = "Index" }
                );
所以我试过这个

 CallbackPath = new PathString(@"/{tenantId}/Authentication/");
两次远射都没有奏效


我不是绝对需要这个,但这是一个新项目,意味着我们不需要将所有的URL迁移到租户使用signin/的地方,因为它当前有{tenantId}/Authentication/

我认为您误解了回调路径的用法。OpenID Connect中间件中的回调路径是用于OpenID Connect协议的身份验证流的内部路径。在从身份提供程序对用户进行身份验证后,用于标识应用程序的路径。您不需要动态更改回调路径,在多租户应用程序中,回调路径可以相同。您可以在JWT令牌中区分租户和租户声明,CallbackPath是内部url,不能用于将用户重定向到应用程序中的不同区域/租户。

这解释了为什么我找不到任何相关信息。因此,为了进行测试,我在URL中删除了与tenantId有关的任何内容,但我意识到我需要在ExchangeCodeAsync中使用DI进行反向通道,并且上下文中没有任何可以用来识别租户的内容。感觉这对所有租户都是正确的,我只是不知道如何在OAuthCodeExchangeContext中包含租户名称我需要了解租户,因为每个租户都有自己的反向通道挑战的秘密身份提供商将发布包含租户id信息的令牌,在您的应用程序中,您可以使用Oauth中间件事件来跟踪租户信息。或者在身份验证之后,您可以从用户声明中获取租户id,并根据该id重定向用户感谢提供的信息,非常感谢。我需要花一些时间来理解这个过程。希望我能把它整理得很好。