在看似基本的情况下,在受OAuth2 / OWIN保护的服务器中调用GET方法会阻止服务器在后续POSTS上接收到/ token端点的Windows标识。我做错了什么?
这是一个Web API服务,包括嵌入式OAuth2授权服务器和Microsoft的OWIN管道。
授权服务器提供程序继承自OAuthAuthorizationServerProvider
,并安装在我的Startup
类中。它会覆盖GrantResourceOwnerCredentials
(用于用户名/密码身份验证)和GrantClientCredentials
(对于client_credentials grant_type)。
这是问题所在。如果我为Windows身份验证配置服务,则会发生以下情况。
GrantClientCredentials
方法的上下文参数(具体为context.Request.User
)中到达服务器。我可以使用context.Validated(id)
给他一个合适的令牌,其中id是适合他的凭据的ClaimsIdentity
。context.Request.User
的服务器。一切都很好。context.Request.User
以null结尾。的问题! 无论是使用IIS Express还是真正的IIS运行,都会出现这些症状。
此问题仅适用于Windows身份验证。打开匿名身份验证并通过用户名/密码duo后,凭据将在步骤7中安全到达。
FWIW,我还没有编写任何与client_id
或“秘密”有关的内容。还在努力搞清楚那部分。如果这是问题所在,我将非常感谢如何发布client_id和秘密。