Microsoft.Owin.Security.Oauth Bearer Token Authorization Interception

时间:2016-03-01 01:44:47

标签: c# asp.net-web-api oauth owin

我正在使用Microsoft.Owin.Security.Oauth在Web API上实施OAuth 2。

我希望将持有人令牌保持在较小状态并保留私有数据。为此,我希望在其中存储会话ID,然后在收到并处理会话ID后以编程方式填写ClaimsIdentity。这也将为我提供更大的灵活性,包括如何处理注销,角色更改和其他事情。

这应该是拦截正确的事件并添加代表的问题。但是,我无法在我的授权提供程序("OAuthAuthorizationServerProvider"的子类)上找到触发的事件。我认为"AuthorizeEndpoint"会这样做,但是对于使用[Authorize]属性修饰的API方法不会被触发,即使这些方法明确地检查了有效的承载令牌。当我覆盖"MatchEndpoint"时,我发现只是对[授权]修饰的方法的调用显示"IsAuthorizeEndpoint""IsTokenEndpoint"都设置为false。后者对我有意义,前者没有。

我很困惑。知道这个图书馆的人能告诉我发生了什么以及我需要做些什么来完成这个看似简单的想法吗?

1 个答案:

答案 0 :(得分:0)

我认为您可能会将使用AuthorizeAttribute标记的资源与OWIN Authorize端点混为一谈。 AuthorizeEndpoint和TokenEndpoint在OWIN配置中设置为各自身份验证类型的接收者。 Authorize Endpoint用于基于Web的用户代理身份验证,如果浏览器未经授权访问资源,您可以将其重定向到的位置。令牌端点用于用户名 - 密码令牌身份验证和刷新,并且是您想要的。假设您在OWIN启动配置中分配了这两个,那么您可能希望重载OnValidateTokenRequest的事件,以确保一旦客户端再次尝试使用它,您对令牌的自定义就不会导致它无效。您可能希望在OnTokenEndpoint事件中对令牌进行实际修改。