簡體   English   中英

Web API 2 OWIN承載令牌認證/如何更改/令牌路徑

[英]Web API 2 OWIN Bearer token authentication/ How do I Change /Token path

我正在編寫具有OWIN身份驗證的SPA應用程序。 最初,我的應用程序被構建為在IIS中作為默認應用程序運行,因此我的“授權”選項如下所示(TokenEndpointPath =“ / Token”)

OAuthOptions = new OAuthAuthorizationServerOptions
            {
                //Exposes Token endpoint
                TokenEndpointPath = new PathString("/Token"),
                //Use ApplicationOAuthProvider in order to authenticate
                Provider = new ApplicationOAuthProvider(PublicClientId, UserManagerFactory),
                AuthorizeEndpointPath = new PathString("/MyApp/api/Account/ExternalLogin"),
                AccessTokenExpireTimeSpan = TimeSpan.FromDays(14), //Token expiration => The user will remain authenticated for 14 days
                AllowInsecureHttp = true                
            };

但是,我需要移動它,使其不再是默認應用程序,而是默認IIS應用程序中的子應用程序,所有我的api調用都將從此路徑進行:

http://localhost:22657/

至:

http://localhost:22657/MyApp

因此,/ Token路徑不再可訪問。 因此,我將TokenEndpointPath更改為:

TokenEndpointPath = new PathString("/MyApp/Token"),

但是,當我對瀏覽器成功進行身份驗證后,來自服務器的響應就是來自Index.cshtml文件的HTML。 我不知道如何診斷WebApi為什么以這種方式處理請求(OWIN顯然沒有處理它。當我在GrantResourceOwnerCredentials方法上設置斷點時,斷點沒有被擊中)。

我的WebApi路由均未配置“令牌”。

1)是否有人知道端點發生了什么,為什么它返回html而不是承載令牌,或者我應該如何對其進行故障排除?

更新:

我想它必須與以下指定索引的默認路由有關。 這導致對/ MyApp / Token的請求被路由到Home / Index。 還有什么我可以代替“ {* url}”來防止的嗎?

routes.MapRoute(
                name: "Default",
                url: "{*url}",
                defaults: new { controller = "Home", action = "Index" }
            );

MVC正在攔截對WebApi / MyApp / Token端點的調用。 為了使MVC忽略此路由,我在下面添加了第二行:

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("{Token}");

但是,這沒有用。 當我將忽略“令牌”的行移到頂部時,它起作用了:

routes.IgnoreRoute("{Token}");
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM