问题标签 [katana]

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 回答
3363 浏览

http - 使用 OWIN 添加多个 WWW-Authenticate 标头

我希望我们的服务宣传不止一种身份验证方案:例如 Bearer 和一些自定义方案,比如 X-Custom。(每个方案我都有一个 OWIN 中间件组件)。我认为如果从RFC 2616, sec 14.47有不止一种方法可以做到这一点:

选项 a) 多个标题 WWW-Authenticate: Bearer WWW-Authenticate: X-Custom

选项 b) 逗号分隔列表 WWW-Authenticate: Bearer, X-Custom

我的偏好是选项 a),因此客户端只需执行类似的操作,Response.Headers.Exists("WWW-Authenticate", preferredScheme)而不是用逗号解析标头(RFC 说他们应该这样做,但是...)

但是,Katana 使用字典作为标题。尝试添加第二个标头会引发异常,“字典中已存在密钥‘WWW-Authenticate’。”

中间件组件有没有办法注入多个 WWW-Authenticate 标头?

0 投票
2 回答
1065 浏览

asp.net - 在 Owin 中检测登录以更新数据库

我在我的 ASP.net MVC 应用程序中使用 Owin 进行身份验证:

在我的数据库中,我存储用户上次登录日期,并使用它向非活动用户发送邮件。如果用户手动登录我的网站,我可以轻松更新数据库。但是,如果用户设置了“记住我”Cookie,Owin 会自动重新验证用户身份,并且我从未收到该用户刚刚开始新会话的信号。

Owin 以任何方式成功验证用户身份后,是否会触发某种事件?我希望像这样的样本:

0 投票
1 回答
559 浏览

asp.net-mvc - 为 Owin 实现自定义角色提供程序时,GetRolesForUser 中的递归调用导致堆栈溢出

我正在使用 ASP NET MVC 5 和 Owin 进行身份验证。在我的帐户控制器中,我像这样设置用户:

显然,我将(单一)角色添加到身份中。在随后的请求中,当我呈现具有角色特定内容的视图时,我的自定义角色提供程序类的 GetRolesForUser(string username) 被调用。我要做的就是从授权用户解包角色声明并返回这些角色的列表。但是,当迭代 Claims IEnumerable 时,在所有声明都被迭代之后,GetRolesForUser 会再次被调用,我最终会陷入一个永无止境的递归调用循环。

只有一个角色,我通过在找到第一个角色类型声明后立即从函数返回来创建一种解决方法:

然而,这样的事情永远不会结束:

为什么?遍历声明调用 GetRolesForUser?如果我有多个角色场景,我将如何获得所有角色的数组?

谢谢,

伊戈尔

0 投票
1 回答
2361 浏览

asp.net-mvc-5 - Internals of OWIN and IIS Integration

I am interested in knowing how IIS invokes the OWIN pipeline during the application lifecycle.

  1. I tried to know this and found that the Microsoft.Owin.Hosting.SystemWeb is responsible for this, but a diagram explaining this will be very helpful for myself and others that are willing to learn about OWIN.

  2. With respect to OWINHost, I was able to figure out how OwinHost sets up the host and then invokes the other OMC etc.

  3. Additionally, I am interested in finding out how the HttpModules that we built in can be used with OWINHost and IIS hosting.

Having filtered through the web, I stand left puzzling and quizzing about these stuff. Suitable pointers or documents will be of great help.

Links referred :

Owin Spec Owin Request pipeline explanation ASP.Net Architecture

0 投票
3 回答
11334 浏览

web-services - OAuth 2 中的访问令牌撤销实现

我使用 OWIN OAuth 2 来实现我的授权服务器提供程序。现在,我想实现令牌撤销(当我的客户端应用程序想要注销时)。
任何人都可以帮助我并告诉我如何在 OWIN KATANA OAuth 2 中实现令牌撤销。是否有一些好的做法?

0 投票
1 回答
1773 浏览

asp.net-web-api - OWIN中间件和客户端不同主机时如何处理外部认证?

我正在尝试为具有一些通用功能的移动和常规站点开发 WEB API,其中之一是身份验证服务。我采用 VS2013 SPA 模板的服务器端部分并尝试基于个人帐户实现安全性。主要要求是能够使用用户名/密码登录并通过 facebook 登录。当 OWIN 中间件和客户端在同一个项目中(例如 VS2013 SPA 的示例)时,VS2013 的 Tempate 工作正常,但是当它不存在时,应该进行一些修改,我想分享:

  1. 在用作 OWIN 中间件 CORS 的 WEB API 上应启用。
  2. 在每个 AJAX 请求的 UI 客户端(这是单独的项目/解决方案)中,应添加额外的标头“X-Requested-With”:“XMLHttpRequest”。我注意到如果没有它,WEB API 返回 XML 而不是 JSON 有效负载,这会导致 UI 示例中的映射不正确(failJSON 无法解析错误消息)。
  3. VS2013 SPA 模板中的 UI 示例设置为与同一主机一起使用,因此应为 UI 客户端中的每个请求添加一些带有基本 url(WEB API url)的前缀。

因此,我通过实现自定义 UserManager、UserStore、IIdentityValidator 和 IPasswordHasher 成功扩展了解决方案,它们与我现有的 MongoDB 数据库和自定义逻辑一起使用。用户名/密码验证工作得很好——我从 WEB API 接收不记名令牌,并且可以在后续调用中使用它。但我在外部身份验证方面遇到的主要问题是:在我的情况下是 facebook。实际上,所有外部登录流程都很顺利,并预测到最后一步,即:

授权端点检查外部登录 cookie 主体并找到关联的应用程序用户,然后将用户作为 Bearer 身份验证类型登录到授权服务器中间件。由于授权服务器看到请求参数 response_type 是令牌(在步骤 1 中),它将触发隐式流程,这将创建访问令牌并将其作为 URL 片段附加到 redirect_uri(步骤 1)。例如:

HTTP/1.1 302 找到 Cache-Control: no-cache Pragma: no-cache Expires: -1 Location: /#access_token=asd2342SDIUKJdsfjk3234&token_type=bearer&expires_in=1200&state=06hwltIjvnTn44hc Set-Cookie: .AspNet.External=; 路径=/; expires=Thu, 01-Jan-1970 00:00:00 GMT Set-Cookie: .AspNet.Cookies=WJgdyZQs9N8TG20EWnik-j0; 路径=/; HttpOnly 内容长度:0

在这里您可以看到为 WEB API 主机生成的 /#access_token,完整的 url 如下所示:

http://mobileapi.example.loc:61707/#access_token=zn73ihR7Uve3TNfTWNnB..AHHwOQijdOaeMDDccUIBbhPiEOVsGn2A&token_type=bearer&expires_in=1209600&state=jZbC35_Inoi8Zop22Mg7xyAzV-BUdE3Zj2k0bMcG5

因此它不会重定向到发起身份验证的客户端(例如 [http://localhost:2108]),而是重定向到中间件主机本身(在我的例子中是http://mobileapi.example.loc:61707)。肯定会给出 404 Not Found,因为 WEB API 仅包含服务器端并且无法解析这个 #access_token - UI 客户端应该这样做。

所以我的问题是如何正确拦截重定向并将服务器主机替换为客户端主机?

PS 我找到了构建这个#access_token 字符串的源代码。它在 OAuthAuthorizationServerHandler 类的 ApplyResponseGrantAsync 方法中,该实例是从 OAuthAuthorizationServerMiddleware 创建的。它具有内部可访问性。所以为了改变这种行为,我应该重写整个中间件,我认为这不是很好的方法。

我看到的 PSS 另一个选项是在 WEB API 上创建全局处理程序,它拦截所有传入的请求,如果它找到一个从 #access_token 开始的请求,那么它将从请求中获取引用主机并重定向到它。但它很丑。

提前谢谢。

0 投票
1 回答
134 浏览

http - OWIN 更改“日期”标题值

有什么方法可以更改作为响应返回的 Date 标头的值?我试图HttpResponse在 WebAPI 操作中的消息上设置标题。

当我在 OWIN 配置中执行此操作时

我仍然收到 3 个标题:

有没有办法改变它们的价值?看起来他们在管道中被设置在非常低的水平。

0 投票
1 回答
976 浏览

owin - 什么是 .Net 的开放式 Web 界面?

我在网上搜索了更多试图了解什么是 OWIN(.Net 的开放式 Web 界面)。我得到了更多关于它解耦服务器和应用程序的信息,但我仍然很困惑,我不能很好地理解它。

0 投票
1 回答
949 浏览

asp.net-web-api - 受 CA SiteMinder 保护时,WebAPI 2 (OWIN/Katana/IIS 7.5) 路由中断

我有一个构建在 OWIN/Katana 堆栈之上的 WebAPI 2 应用程序,托管在 IIS 7.5 中,当 SiteMinder 尝试重定向到我的 API 路由时,我似乎无法让 WebAPI 路由工作(它返回 404 )。

Siteminder 已正确安装在此 Web 服务器上(适用于我的 MVC 5 应用程序,它位于我的 OWIN WebAPI 应用程序的同级 IIS 应用程序中)。

当从我的 WebAPI 应用程序中删除 SiteMinder IIS7WebAgent 模块时,一切都很好,并且我的路线被正确识别。

但是,当我添加 Web 代理模块(使用 runAllManagedModulesForAllRequests="true")时,只请求 WebAPI 的默认路由工作(即,“/myapp/”路由到我的默认“home”控制器,但请求“/myapp/ home”都返回 404)。

有谁知道这需要如何配置?

0 投票
2 回答
5025 浏览

asp.net-web-api - 身份验证/授权 MVC 5 和 Web API - Katana/Owin

我在尝试决定承担我的项目的路线时遇到问题。

我一直在阅读 OWIN 规范和 .NET 中的 Katana 实现。我想使用 Katana 路线的原因是因为与 ADFS 和 Token/Cookie 生成相关的 owin 组件。

我有两个项目,一个用于 MVC 5 网站,一个用于 Web API。将来它们可能位于两台不同的服务器上,但现在它们在同一台服务器上。

我知道我将使用 IIS,因此我不需要调查 Owin 管道。

我的要求是,有些用户将使用 ADFS 登录,而其他用户将使用 Token/Cookie 生成以及角色/成员资格提供程序登录。根据谁通过身份验证,我的网页的某些部分将被公开。网页工程师是在剃刀中完成的。

有没有人可以阅读任何材料来帮助解释我可以采用的设计流程?或者有人做过类似于我正在经历的项目,可以添加任何建议?有很多不同的文档描述了我需要的具体事物,但不是全局;就像只谈论 WebAPI 和 ADFS,或者 WebAPI 和 windows azure 等。

我的理论是在MVC5网站项目上实现认证/授权,在Web API上进行授权(不知何故两者之间需要存在通信)。然后我可能会为 ADFS 创建一个项目副本并为令牌/cookie 身份验证创建另一个副本?或者也许我必须进行 4 种不同类型的身份验证:2 种用于我对 MVC5 网站和 Web API 进行身份验证的 adfs,另外 2 种用于令牌/cookie 生成。

任何建议都会有所帮助,因为我对这种技术不是很熟悉。