问题标签 [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 投票
1 回答
1616 浏览

owin - GenerateCorrelationId() 和 ValidateCorrelationId() 有什么作用?

我在自定义 owin 处理程序中看到此代码来执行 Oauth2。例如这里:https ://github.com/RockstarLabs/OwinOAuthProviders/blob/master/Owin.Security.Providers/Reddit/RedditAuthenticationHandler.cs

有人可以用简单的英语向我解释这两种方法在 oauth2 的上下文中的作用吗?它似乎与 CSRF 有关,但不确定如何。

0 投票
1 回答
1827 浏览

c# - 调试自托管 OWIN 中间件并不总是运行

我有一个简单的控制台应用程序来学习 OWIN/Katana,但我被卡住了。

这启动得很好,并击中了我的 using 块。 控制台启动准备收听请求

然后我看到我的 Startup 被称为: Use() 方法在调试期间被命中

接下来我在 Chrome 中启动 Postman 并提交一个 GET 请求。在这一点上,我的断点永远不会在任何一个模块中被击中。 邮递员 GET 设置

无论我进行什么更改,它都不会将我的消息记录到控制台。有没有办法找到失败的地方?在 Postman 中,我确实收到了带有有效负载的 HTTP 200。OwinMiddleware 类来自 Microsoft.Owin 命名空间。

Owin 中间件模块组件

编辑:项目的技术堆栈:

使用 $resource 运行 AngularJs 1.4 的网站(不是 Web 应用程序)。带有 OData V4 的 WebApi 2.2

在 .Net 4.5 上运行

0 投票
1 回答
41 浏览

visual-studio-2013 - SPA模板中cookie中间件的作用是什么

VS 2013 SPA 模板配置了 cookie 中间件,以及 OAuth MW 或 ExternalCookie MW 等其他中间件。

由于 WebApi 将通过不记名令牌授权从客户端进行的调用,并且外部 cookie 中间件支持外部登录提供程序,那么 cookie 中间件在其中扮演什么角色?

0 投票
1 回答
710 浏览

c# - OWIN 中间件中的异常处理

我正在尝试添加一些中间件,以便我捕获并记录任何未处理的异常,但在这样做时遇到了一些困难。在这方面找不到很多东西,出于某种奇怪的原因,我的代码似乎没有进入 catch 块。似乎它正在优雅地处理这个甚至询问我看不到异常的字典。

我想要发生的是,进入 catch 块抓取异常并记录堆栈跟踪。

编码:

0 投票
1 回答
847 浏览

asp.net-web-api - OWIN 中间件:查找请求是否有匹配的路由

我们想编写一个 OWIN 中间件来查看当前请求并查看它是否匹配任何映射的路由(我们使用的是 web.api,因此我们使用该httpRouteCollection.MapHttpRoute方法注册路由。

如果当前请求与任何已知的配置路由不匹配,我们希望使用自定义 404 消息拒绝它。

是否可以从 OWIN 上下文中确定当前请求是否与定义的路由之一匹配?

0 投票
2 回答
1289 浏览

asp.net-mvc - 获取访问令牌 Asp.NET Web Api 2

我在使用 web api 2 时遇到问题。

我正在使用 vs2015 并在 asp.net mvc 单页模板上开发了我的项目,该模板使用敲除和 sammy 通过owin中间件获取/授权身份。

当我通过默认单页 app.js 请求访问令牌时,效果很好,但如果我尝试通过邮递员 ( grant_type=password&username=admin@mail.com&password=1234) 获取令牌,则会返回invalid_cliend错误。

提供者:

启动.Auth:

我需要你的帮助。

0 投票
3 回答
22613 浏览

asp.net-web-api - OWIN 中间件中的全局异常处理

我正在尝试在构建于 OWIN 中间件(使用 Owin.Host.SystemWeb 的 IIS 主机)之上的 ASP.NET Web API 2.1 项目中创建统一的错误处理/报告。目前我使用了一个自定义异常记录器,它继承自System.Web.Http.ExceptionHandling.ExceptionLogger并使用 NLog 记录所有异常,如下代码:

我想将所有 API 异常的响应正文更改为友好的统一响应,该响应使用System.Web.Http.ExceptionHandling.ExceptionHandler以下代码隐藏所有异常详细信息:

当发生异常时,这将为客户端返回以下响应:

现在,如果Api Controller 请求管道中发生任何异常,这一切都很好。

但是在我的情况下,我使用中间件Microsoft.Owin.Security.OAuth来生成不记名令牌,而这个中间件对 Web API 异常处理一无所知,所以例如,如果在方法中抛出了异常,ValidateClientAuthentication我将NLogExceptionLogger不会ContentNegotiatedExceptionHandler知道有关此异常的任何信息,也不尝试处理它,我在中使用的示例代码AuthorizationServerProvider如下:

因此,我将不胜感激在实施以下 2 个问题方面的任何指导:

1 - 创建一个仅处理由 OWIN 中间件生成的异常的全局异常处理程序?我按照这个答案创建了一个用于异常处理的中间件并将其注册为第一个中间件,并且我能够记录源自“OAuthAuthorizationServerProvider”的异常,但我不确定这是否是最佳方法。

2 - 现在,当我在上一步中实现日志记录时,我真的不知道如何更改异常的响应,因为我需要为“OAuthAuthorizationServerProvider”中发生的任何异常返回一个标准的 JSON 模型给客户端。这里有一个相关的答案,我试图依赖它,但它没有用。

这是我的 Startup 类和GlobalExceptionMiddleware我为异常捕获/记录创建的自定义。缺少的和平正在为任何异常返回统一的 JSON 响应。任何想法将不胜感激。

0 投票
2 回答
885 浏览

.net - Google OAuth2 要求“离线访问”

我正在使用Microsoft.Owin.Security.Google(version 3.0.1) 中间件为我的应用程序提供 Google OAuth。

它是这样配置的:

很简单的东西。我使用IdentityServer作为 MW 来发布声明。

当我首次向 Google 验证用户身份时,Google 会征求用户的以下同意: 在此处输入图像描述

这完全有道理,因为我openid profile email在 URL 中请求范围:

https://accounts.google.com/o/oauth2/auth?scope=openid个人资料 email&response_type=code&redirect_uri= https://localhost:44301/core/signin-google&state=xxx&client_id=111.apps.googleusercontent.com&hl=en- GB&from_login=1&as=-25fb4219b2997893&authuser=0

然后我接受,一切正常。

现在,在我注销后,再次重新进行身份验证 - 从现在开始,谷歌一直在询问我“离线访问”:

在此处输入图像描述

我没有要求离线访问范围,所以很困惑为什么谷歌要求这个?

确认 URL 看起来不错:

https://accounts.google.com/o/oauth2/auth?scope=openid个人资料 email&response_type=code&redirect_uri= https://localhost:44301/core/signin-google&state=xxx&client_id=111.apps.googleusercontent.com&hl=en- GB&from_login=1&as=676f55265a78c036&authuser=0

所以与第一个请求完全相同的 URL。

我努力了:

  1. 在 API 控制台中打开 Google+ API
  2. 尝试添加&prompt=auto(导致错误“提示的参数值无效:无效提示:自动”)
  3. 尝试添加access_type=online(即使这是默认设置,如果未提供)。
  4. 尝试添加approval_prompt=auto

这些技术都没有奏效。

有任何想法吗?

0 投票
2 回答
1150 浏览

log4net - 使用 OWIN 中间件或委托 MessgaeHandler 来记录 api 请求/响应?

在我旧的非 OWIN API 中,我使用 MessageHanlder 来记录所有 HttpRequests 和 HttpResponses。这是消息处理程序:

但是,在我较新的项目中,我可以编写自定义 OWIN 中间件来使用 OwinContext 执行类似的操作,如下所示:

我正在使用 log4net 将信息写入 SQL2012 数据库。两种方式都实现了我的目标。但是,我正在寻找使用一种方法而不是另一种方法的理由。我应该使用自定义 OWIN 中间件还是 MessageHandler,为什么?提前致谢。

0 投票
1 回答
4228 浏览

c# - Web Api 2 在 OWIN 中间件中获取控制器和操作名称?

如何在一段自定义 OWIN 中间件中检索 api 控制器名称和 api 操作名称?我可以在消息处理程序中这样做:

更新: 这是我当前的 OWIN 中间件。如何在此代码中获取 controllerName 和 actionName?