标签: katana

Owin只提供某些文件夹中的文件

所以我正在玩Owin和Katana,我想在我的公共文件夹中提供静态文件.

我有一个带有样式表和脚本文件夹的Content文件夹.

我的创业公司:

    public void Configuration(IAppBuilder app)
    {
 #if DEBUG
        //when things go south
        app.UseErrorPage();
  #endif

        // Remap '/' to '.\public\'.
        // Turns on static files and public files.
        app.UseFileServer(new FileServerOptions()
        {
            RequestPath = PathString.Empty,
            FileSystem = new PhysicalFileSystem(@".\public"),
        });

    }
Run Code Online (Sandbox Code Playgroud)

因此,如果我浏览到localhost:8861 /我去我公共文件夹中的index.html文件.没关系.但我也可以浏览我想要阻止的localhost:8861/Content/style.css.应该可以在公用文件夹中访问用户需要的所有内容.其余的都应该被阻止.

我怎样才能做到这一点?

c# static-files owin katana owin-middleware

5
推荐指数
1
解决办法
5861
查看次数

MVC5 OWIN ws-federation AuthenticationManager.GetExternalLoginInfoAsync() 返回 null

我正在尝试在 Visual Studio 2013 的新 MVC 5 项目中设置集成的 OWIN WS-Federation (ADFS) 身份验证。 Startup.Auth 中的 WsFederation 配置如下:

app.UseWsFederationAuthentication(wtrealm: "MyRealm",
               metadataAddress: "https://myADFSInstanceHost/FederationMetadata/2007-06/FederationMetadata.xml");  
Run Code Online (Sandbox Code Playgroud)

登录页面上的联合按钮工作正常。ADFS登录页面是可以实现的,我可以在那里登录。所需的 cookie 似乎已正确设置。至少有传递 .AspNet.ExternalCookie cookie。但是当执行对 mvc 应用程序的回调时,在 ExternalLoginCallback 控制器中 AuthenticationManager.GetExternalLoginInfoAsync() 总是返回 null。

asp.net-mvc adfs ws-federation owin katana

5
推荐指数
1
解决办法
1634
查看次数

Microsoft.Owin.Security.Basic NuGet包在哪里?

我似乎无法找到发布的Microsoft.Owin.Security.Basic版本的NuGet包.我希望它能在nuget.org上,但事实并非如此.根据Katana项目网站,Microsoft.Owin.Security.Basic于2013年发布了v2.0.0.0.

https://katanaproject.codeplex.com/wikipage?title=roadmap

有谁知道我在哪里可以找到Microsoft.Owin.Security.Basic NuGet包或者至少发生了什么?

编辑

为了防止其他人遇到同样的问题,我只是将其发布到Katana项目中.

https://katanaproject.codeplex.com/workitem/381

c# asp.net-web-api owin katana

5
推荐指数
1
解决办法
449
查看次数

如何单步进入包中的 OWIN 中间件?

我的 ASPNET 5 应用程序启动中有以下堆栈:

appBuilder.UseIdentityServerBearerTokenAuthentication();
// That calls
app.UseValidationEndpoint();
// That calls
app.UseOAuthBearerAuthentication();
// That calls
app.Use(typeof(OAuthBearerAuthenticationMiddleware), app, options);
Run Code Online (Sandbox Code Playgroud)

最后的调用添加OAuthBearerAuthenticationMiddleware到中间件管道,此类覆盖CreateHandler()返回类的新实例的方法OAuthBearerAuthenticationHandler

OAuthBearerAuthenticationHandlerclass 是处理不记名令牌的类,这就是我要介入的地方。问题是我只能在该Startup.Configure()方法中设置断点,并且该方法仅在应用程序启动时运行一次。

即使在这种情况下,我也已经开始OAuthBearerAuthenticationHandler使用从 CodePlex 下载的原始 Katana 源代码并加载适当的符号,但由于某种原因,这些符号不会向我提供有关该类的信息OAuthBearerAuthenticationHandler

我真的需要了解该类内部发生了什么,特别是该AuthenticateCoreAsync()方法,但我不知道如何捕获请求并通过管道堆栈并到达该类,因为Startup.Configure()仅被调用一次,在我的情况下我只有当我提供不记名令牌时才会出现问题。我希望我足够清楚能够得到答案:)

visual-studio-debugging owin katana owin.security

5
推荐指数
0
解决办法
684
查看次数

微软Asp.net Owin Helios项目还活着吗?

一年前,微软宣布了"helios"项目(http://blogs.msdn.com/b/webdev/archive/2014/02/18/introducing-asp-net-project-helios.aspx).从那时起,它的nuget包没有更新,也没有相关新闻.开始使用它是否安全还是死了?

asp.net helios owin katana

5
推荐指数
1
解决办法
1192
查看次数

ASP.NET MVC 应用程序如何严重依赖 System.Web 程序集?

我读过很多关于 OWIN 和 Katana 的文章,在 ASP.NET 应用程序中使用 OWIN 的好处之一是,在构建 ASP.NET 应用程序时,由于对 System.Web 的严重依赖,我天生就绑定到 IIS集会。换句话说,System.Web 程序集默认在每个请求上运行。

实际上,我不明白 System.Web 如何在每个请求上运行,从而消耗资源并使 ASP.NET 应用程序总体上变慢很多。中间件组件是如何解决这个问题的?他们不依赖于 System.Web 程序集吗?

asp.net asp.net-mvc owin katana

5
推荐指数
1
解决办法
497
查看次数

OWIN中OAuthAuthorizationServer的自定义响应

我需要为令牌生成生成自定义响应 OAuthAuthorizationServer

默认的resposne是这样的

{
  "access_token": "***access_token***",
  "token_type": "bearer",
  "expires_in": 119,
  ".issued": "Mon, 31 Oct 2016 11:20:50 GMT",
  ".expires": "Mon, 31 Oct 2016 11:22:50 GMT"
}
Run Code Online (Sandbox Code Playgroud)

如何生成此输出而不是默认输出?

{
  "message": "Token Granted",
  "data": 
    {
      "Token": "***access_token***"
    },
  "messageCode": 200
}
Run Code Online (Sandbox Code Playgroud)

c# asp.net oauth-2.0 owin katana

5
推荐指数
1
解决办法
628
查看次数

指定重定向时,AAD 身份验证后无限重定向循环

如果我在 OpenIdConnectAuthenticationOptions 中指定重定向 URI,如下所示

app.UseOpenIdConnectAuthentication(
            new OpenIdConnectAuthenticationOptions
            {
                ClientId = clientId,
                Authority = Authority,
                PostLogoutRedirectUri = postLogoutRedirectUri,
                RedirectUri = redirectUri,

                Notifications = new OpenIdConnectAuthenticationNotifications()
                {
                    AuthenticationFailed = context =>
                    {
                        context.HandleResponse();
                        context.Response.Redirect("/Error?message=" + context.Exception.Message);
                        return Task.FromResult(0);
                    }
                }
            });
Run Code Online (Sandbox Code Playgroud)

然后我得到一个无限的重定向循环。只有当我将它放在独立的 IIS 服务器(我们的测试服务器)上时才会发生这种情况。如果我删除 AAD 中的所有重播 url,并仅将其设置为测试服务器,并删除上面的“RedirectUri = redirectUri”,我的问题就会消失。

我这里有一个小提琴手日志:https://drive.google.com/file/d/0B5Ap95E_wdyAa0RLLWloZ0dCaGM/view ?usp=sharing

看起来,当来自 AAD 的请求返回到我的应用程序时,在获取和使用令牌之前,中间件只是用 302 将其弹回。另外可能重要的是,我在 mvc 上具有 [Authorize] 属性路由和返回 uri 指向的控制器。如果我删除它,我就不会遇到这个问题。

[更新] 我尝试将应用程序移动到 IIS 的本地主机安装,而不是使用 iisexpress,以便我可以将其设置为子应用程序,就像在我的 iis 服务器上一样。在我的本地主机上,它执行相同的无限循环。我在 [Authorize] 属性的覆盖上添加了一些遥测自定义事件,并且能够发现当页面在身份验证后重定向回应用程序时 httpContext.user.identity.IsAuthenticated = false。那么不知何故,OWIN 中间件没有将其设置为 true?

谢谢你的帮助!

katana asp.net-mvc-5 azure-active-directory adal openid-connect

5
推荐指数
1
解决办法
6964
查看次数

OWIN OpenId Connect 身份验证和基于角色的授权

我有一个 WebForms 应用程序(不是 MVC,不是 WebApi),我正在将其移植到 OpenID Connect 外部身份验证(.net 4.7.2,最新的 OWIN NuGet 包)。此 Web 应用程序使用基于角色的授权,以防止未经授权的用户访问应用程序的某些部分。角色通过 OIDC 声明提供,并在 Web 应用程序中指定为web.config授权条目。

主要流程是这样的:当用户未经身份验证并且用户在其 ClaimsIdentity 中具有适当的角色时,应用程序会正确地将用户重定向到 OIDC 提供商。

当用户登录但不具备访问角色限制区域所需的角色时,就会出现此问题。在这种情况下,UrlAuthorizationModule返回 401 Unauthorized 错误(不应该是 403 Forbidden 吗?!),这会触发 OIDC 质询,该质询会发送到 OIDC 提供商,该提供商返回具有相同声明的同一用户,这会触发另一个401,用户会经历无限的重定向循环。

我可以检测通知中的条件RedirectToIdentityProvider并使用该Response.Redirect方法向用户呈现错误消息,但这会导致 302 > 403 错误序列并更改页面的浏览器 URL 403.aspx。我宁愿重写响应并保留当前 URL,但我不知道如何实现(检查 Startup.cs 代码片段内的 * 标记行)。

你有什么想法?

相关 Startup.cs 片段:

app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
app.UseCookieAuthentication(new CookieAuthenticationOptions() { });

app.UseOpenIdConnectAuthentication(
    new OpenIdConnectAuthenticationOptions {
        ClientId = ClientId,
        ClientSecret = ClientSecret,
        Authority = Authority,
        Scope = Scopes, …
Run Code Online (Sandbox Code Playgroud)

asp.net webforms owin katana openid-connect

5
推荐指数
0
解决办法
1110
查看次数

在Azure App Service上使用OWIN'SystemWeb'的Web API应用程序

我正在创建在.NET中使用Identity 2.1.0框架的应用程序.我在Visual Studio 2015中开始作为Empty Web App(模板)项目.现在,我使用的Microsoft.AspNet.WebApi.Owin,也Microsoft.Owin.Host.SystemWeb的NuGet包在我的项目.我知道OWIN是一个规范,旨在避免单片框架,并指定较小的应用程序组件与服务器的交互方式.但是,我需要部署到Azure App Services.

我找到了一些示例(博客),其中人们将OWIN Web Api应用程序部署为Azure云服务工作者角色的自托管.但我不希望这样,因为我不使用Cloud Service.

由于我正在使用Microsoft.Owin.Host.SystemWeb,我是否能够将其部署到Azure App服务(我假设管理内部IIS实例)?

.NET生态系统新手在这里 - 所以请原谅我在问题中可能出现的任何冗余.

azure asp.net-web-api azure-web-sites owin katana

4
推荐指数
1
解决办法
2028
查看次数