【问题标题】:Microsoft.Owin.Security.Oauth Bearer Token Authorization InterceptionMicrosoft.Owin.Security.Oauth Bearer Token 授权拦截
【发布时间】:2016-03-01 01:44:47
【问题描述】:

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

我想保持不记名令牌的大小,并将私人数据排除在外。为此,我想在其中存储一个会话 ID,然后在收到并处理会话 ID 后以编程方式填写 ClaimsIdentity。这也将在如何处理注销、角色更改和其他事情方面给我更大的灵活性。

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

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

【问题讨论】:

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-30
    • 2014-09-24
    • 1970-01-01
    • 2017-01-14
    • 2017-08-18
    • 2020-10-11
    • 2020-08-15
    相关资源
    最近更新 更多