0

因此,我们Okta在我们的应用程序中集成了一个SSO利用OWINstack 和Microsoft.Owin.Security.WsFederationnuget 包的解决方案。总体而言,它似乎运行良好,但是当将授权属性WebApi添加到组合中时,我们遇到了问题。自定义授权属性按设计为通过字符串参数提供的权限工作,但是问题似乎出现在返回401 response. 似乎这个 401 在全球范围内受到关注,因为我从来没有点击我的自定义OWIN middleware组件来登录(即:重定向到 Okta)但是当302返回 a 时 API 请求仍然失败,这会触发重定向到Okta. 我读过的每一篇文章都表明要遵循这个Brock Allen 的博客文章,但是正如我提到的,重定向永远不会触发此代码。我考虑过构建一个 Angular 拦截器,但我根本不喜欢这种方法,所以我403 (Forbidden)现在从Authorize属性中返回一个,这并不理想但可行。 这篇SO 帖子似乎是关于这个问题的主要讨论,但我没有按照那里的建议走运。这是迄今为止使用的中间件代码,是否有人对如何排除 /api 路由重新定向到 Okta 有任何想法或想法?

        var fileSystem = new PhysicalFileSystem(@".\wwwroot");

        var options = new FileServerOptions()
        {
            FileSystem = fileSystem,
            EnableDefaultFiles = true,
            EnableDirectoryBrowsing = true,
        };

        app.SetDefaultSignInAsAuthenticationType(WsFederationAuthenticationDefaults.AuthenticationType);

        app.UseCookieAuthentication(
            new CookieAuthenticationOptions
            {
                AuthenticationType = WsFederationAuthenticationDefaults.AuthenticationType,
            });

        app.UseWsFederationAuthentication(
                new WsFederationAuthenticationOptions
                {
                    MetadataAddress = ConfigurationManager.AppSettings["MetadataAddress"],
                    Wtrealm = ConfigurationManager.AppSettings["Wtrealm"],
                    TokenValidationParameters =
                    {
                        ValidAudience = ConfigurationManager.AppSettings["ValidAudience"]
                    }
                });


        app.Map("/api", x =>
        {
            dependencyResolver = x.UseApi();
        });

        app.UseFileServer(options);
4

1 回答 1

1

我建议看看http://www.cloudidentity.com/blog/2014/04/28/use-owin-azure-ad-to-secure-both-mvc-ux-and-web-api- in-the-same-project/ - 这篇文章是关于 OIDC 但也应该适用于 wsfed。

于 2015-12-18T21:16:00.697 回答