问题标签 [owin-middleware]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1098 浏览

c# - 使用 [Authorize] 属性时未读取身份验证 cookie

我需要帮助使用 cookie 身份验证配置我的 asp.net 应用程序。这是我的配置的样子:

我的登录api路线是:

调用登录会返回一个名为.AspNet.ApplicationCookie的 cookie ,但是当我调用注销操作时:

我收到以下错误:此请求的授权已被拒绝

我究竟做错了什么?

注意:我用[Authorize]属性装饰了控制器

0 投票
1 回答
1011 浏览

c# - 动态更改 Owin 配置值

我正在使用 Owin 管道并在 startup.auth.cs 中设置应用程序 cookie 间隔,如下所示 timeout=Convert.ToDouble(ConfigurationManager.AppSettings["SessionTimeOut"]);

当我在 web.config 中更改 SessionTimeout 的值时,我需要重新启动 IIS 以获取新值,因为仅第一次调用 startup.auth.cs。无论如何我可以在不重新启动 IIS 的情况下动态更改 cookie expiretimespan。我还使用 kento.authservices 进行单点登录,我在 startup.auth.cs 中配置。我还需要动态更改其中的配置值。请你帮忙。

0 投票
1 回答
43 浏览

single-sign-on - 在 SSO 情况下在哪里处理应用程序初始化?

我有 App1 和 App2,使用 IdentityServer3 和 Active Directory 进行 SSO。

每个应用程序都有自己的用户和角色。我创建了一个 ClaimsTransformation OWIN 中间件,获取用户/角色,序列化为 cookie,然后返回后续调用。效果很好。

但是我在哪里处理初始用户注册?我不能在身份验证中这样做,因为如果 App1 用户登录,然后以新用户身份进入 App2,他将跳过身份验证。

如果我在中间件中执行此操作,当我尝试将用户重定向到注册/个人资料页面时,该重定向会再次被中间件命中,从而导致重定向循环。

有什么建议么?谢谢。

0 投票
2 回答
7543 浏览

c# - 更改中间件中的 OWIN Request.Body

我想为 API 调用实现自定义加密中间件。首先,我阅读了请求正文 ( IOwinContext.Request.Body) 和标头(加密密钥和签名)。然后,我解密请求正文,这给了我纯 json 字符串。现在到了棘手的部分:我想把这个 json 写回IOwinContextRequest.Body,所以它可以反序列化为对象,然后作为 Controller 方法的参数传递。这就是我所做的:

启动:

中间件:

现在,我得到的是这个错误:

System.Web.Extensions.dll!System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializePrimitiveObject() 抛出异常:System.Web.Extensions.dll 中的“System.ArgumentException”

原文在哪里IOwinContext.Request.Body

所以我假设你不能以这种方式更改请求正文。为了测试这一点,我重写了这样的中间件:

现在我认为Controller方法应该接收“ORIGINAL BODY”而不是“newBody”,但实际上我得到了这个错误:

System.dll!System.Diagnostics.PerformanceCounter.InitializeImpl() 抛出异常:System.dll 中的“System.InvalidOperationException”

附加信息:请求的性能计数器不是自定义计数器,它必须初始化为只读。

问题是:我的方法有什么问题?重写请求正文的正确方法是什么?有没有足够的解决方法? 顺便说一句:数据的解密经过测试并且完美无缺,因此错误不应源自那里。

编辑:在您回答/评论之前,已经使用了 TLS。这是另一层安全。我不是在重新发明轮子。我正在添加一个新的。

0 投票
1 回答
217 浏览

.net - NUnit 测试用例跳过 owin 中间件

我有一个 OAuthServerProvider 在验证用户名和密码后发出令牌。当用户名或密码无效时,我拒绝 owin 上下文,默认情况下它将400 Bad Request作为状态码返回。

但我想回应401 Unauthorized

为了实现这一点,我编写了一个中间件,它将检查标头并查看是否存在自定义标头,如果存在则将状态代码替换为 401。

当我用 fiddler 击中它时,这绝对可以正常工作,但是我在下面编写的单元测试总是得到 400。不知何故,当我用单元测试发出请求时,中间件被跳过了。

需要知道我在这里做错了什么。

0 投票
1 回答
3399 浏览

c# - IdentityServer、ASP.NET Core 和 Web API

我已经设置了 IdentityServer4 和另一个客户端 ASP.NET Core 应用程序。客户端需要通过 IdentityServer 进行身份验证并请求访问标准 MVC Web API 项目的第三个应用程序。

我已按照此示例https://identityserver.github.io/Documentation/docsv2/overview/simplestOAuth.html实现客户端凭据流的步骤

现在我完全不知道如何让 WEB API 首先识别承载令牌,然后给我一些授权来访问 web api 端点。

这是我的 IdentityServer Statrup.cs

和 Config.cs

ASP.NET Core 调用 IdentityServer 和 Web API

那么任何人都可以解释或分享一些关于我应该怎么做才能让 WEB APi(带有 owin 中间件)来处理来自 ASP.NET Core 客户端的调用的链接吗?我应该在 Owin 配置(IAppBuilder 应用程序)方法中放置什么设置。

0 投票
1 回答
2349 浏览

asp.net - 在 ASP.NET OWIN OpenIdConnect 代码授权流程中通过基于令牌的身份验证替换 Cookie

我们有一个用 ASP.NET 编写的 Web 应用程序,它使用 MVC 为我们的单页应用程序提供服务,并为 ajax 调用提供 Web API。

身份验证使用Microsoft.OwinOpenIdConnect以及 Azure AD 进行授权。OAUTH 流程是服务器端代码授权。然后在Startup.Auth.cs我们有

单击登录时,我们导航到一个 url,其路由映射到以下 MVC 控制器的方法

然后,连接到我们应用程序的最终用户使用 ASP.NET cookie 在我们的客户端应用程序和 ASP.net 服务器之间进行身份验证。我们想改用基于令牌的方法。如果你有兴趣,这就是原因

我试图 用Microsoft.Owin.Security.OAuth和 Startup.cs 替换Nuget 包Microsoft.Owin.Security.Cookies

app.UseCookieAuthentication(cookieAuthenticationOptions);经过app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions());

在我的AccountController中,我们将挑战HttpContext.GetOwinContext().Authentication.SignOut(authenticationProperties, OpenIdConnectAuthenticationDefaults.AuthenticationType, CookieAuthenticationDefaults.AuthenticationType);HttpContext.GetOwinContext().Authentication.SignOut(authenticationProperties, OpenIdConnectAuthenticationDefaults.AuthenticationType, OAuthDefaults.AuthenticationType);

问题在于,使用 Cookie时,当流程完成时, set-cookie会在 Web 请求响应中自动发送,同时重定向到我们指定的 url。 我在哪里可以找到 OWIN 使用 UseOAuthBearerAuthentication 生成的承载(如果有)**、**我应该在何时何地将其发送回我的客户端 SPA

注意:可以在这个 github 存储库中找到我们正在尝试做的开源示例。

0 投票
0 回答
43 浏览

c# - 如何在我的操作方法中访问每个请求 DbContext 的 OWIN 实例?

我什至从未注意到这段代码:

所以我什至写了一个DbContext过滤器,在请求的开始和结束时创建和处理一个实例。

现在看起来 OWIN 为我做了这个,我如何访问DbContext它处理的?

应如何使用 IAppBuilder.CreatePerOwinContext问题的公认答案?对我不起作用,没有无参数Get(),并且仅使用AssemblyQualifiedName类型返回 null。

0 投票
1 回答
756 浏览

asp.net-web-api2 - Autofac、OWIN 和临时的按请求注册

我有一个关于在 Autofac 使用 Web API OWIN 管道时创建临时请求范围的问题。

我们需要按需禁用一些外部依赖项,以便我们的 QA 团队可以测试他们的负面测试用例。我不想更改正常应用程序流程中的任何代码,所以我所做的是创建一个自定义中间件来检查对某些 QA 标头的请求,并且当它们存在时扩展具有临时新范围的普通容器,注册一个替换仅用于该调用的对象,覆盖 autofac:OwinLifetimeScope,然后在该调用结束时处理该临时范围。

这允许我仅覆盖该请求的正常容器行为,但允许所有其他请求正常继续。

这是我的中间件的修改示例。此代码完全按预期工作。

然而,线条

看起来很hacky,我不喜欢它们。我已经四处搜索,但我没有找到一种干净地覆盖上下文对象的方法,或者找到一种更好的方法来实现这个功能。

我正在寻找任何建议以更好地处理此问题。

0 投票
2 回答
1383 浏览

asp.net - 使用 ASP.NET Core WEB API 令牌身份验证作为具有 OWIN/Katana OAuth 2.0 授权服务器的资源服务器

是否可以将 ASP.NET Core Web api 服务身份验证与 OWIN/Katana OAuth 2.0 授权服务器一起使用?

要在 ASP.NET 4.5.x WEB API 2 中使用默认(承载)OAUTH2 访问令牌,可以通过添加以下内容来完成:

并通过将 machinekey 添加到 web.config。

是否可以以及如何通过 ASP.NET Core Web api 使用来自 OWIN/Katana OAuth 2.0 授权服务器的访问令牌(令牌采用 TicketDataFormat,这是默认设置)?