因此,我们已使用Okta
堆栈和SSO
nuget包在OWIN
解决方案的应用程序中集成了Microsoft.Owin.Security.WsFederation
。它总体上运行良好,但是当WebApi
的authorize属性添加到混合中时,我们遇到了问题。自定义authorize属性的工作方式与通过string参数提供的权限相同,但问题似乎与返回401 response
的默认行为有关。似乎全局都在关注这个401,因为我从未点击我的自定义OWIN middleware
组件进行登录(即:重定向到Okta)但是当返回302
时,API请求仍然失败,触发了重定向到Okta
。我读过的每篇帖子都表示要遵循Brock Allen撰写的this博客文章,但正如我所提到的那样,重定向永远不会触发此代码。我想过建立一个角度拦截器,但我根本不喜欢这种方法,所以我现在从403 (Forbidden)
属性返回一个Authorize
,这是不理想但可行的。 This 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);
答案 0 :(得分: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。