有没有办法在web api应用程序中同时使用基于令牌的身份验证和Windows身份验证?
我们有一个使用基于令牌(承载)身份验证的“标准”web-api应用程序 .
OAuth配置如下所示:
OAuthOptions = new OAuthAuthorizationServerOptions {
TokenEndpointPath = new PathString("/Token"),
Provider = new ApplicationOAuthProvider(PublicClientId),
AccessTokenExpireTimeSpan = TimeSpan.FromDays(1),
};
app.UseOAuthBearerTokens(OAuthOptions);
一切正常 . 当调用“/ Token” - endpoints 时,您将获得令牌并获得授权 .
现在我想添加Windows身份验证,以便与调用web-api的客户端的windows-os的登录用户启用“signle-sign-on” .
到目前为止我做了什么:
更改了web.config并添加了
<system.web>
<identity impersonate="true" />
<validation validateIntegratedModeConfiguration="false" />
</system.web>
现在,每个请求都使用Windows用户进行身份验证,而不使用令牌进程 .
所以我添加了另一个提供程序,使用您的Windows身份登录并获取令牌:
app.UseOAuthAuthorizationServer(new OAuthAuthorizationServerOptions {
TokenEndpointPath = new PathString("/IdentityToken"),
Provider = new WindowsIdenityAuthorizationServerProvider(),
AccessTokenExpireTimeSpan = TimeSpan.FromDays(1),
});
除了密码验证之外,提供程序应该与生成用户名和密码请求的令牌的_2710039几乎相同 . 不幸的是,针对"/IdentityToken" -endpoint的请求中没有设置用户/身份 .
任何人都可以帮我这个,还是我完全走错了路?