WebApi:基于令牌的Windows身份验证

时间:2017-08-30 07:24:38

标签: c# authentication asp.net-web-api windows-authentication

有没有办法在web api应用程序中同时使用基于令牌的身份验证和Windows身份验证?

我们有一个"标准" web-api-application使用基于令牌的(承载)认证。

OAuth配置如下所示:

OAuthOptions = new OAuthAuthorizationServerOptions {
     TokenEndpointPath = new PathString("/Token"),
     Provider = new ApplicationOAuthProvider(PublicClientId),
     AccessTokenExpireTimeSpan = TimeSpan.FromDays(1),
};
app.UseOAuthBearerTokens(OAuthOptions);

一切正常。在调用" / Token" -endpoint时,您将获得令牌并获得授权。

现在我想添加Windows身份验证,以启用" signle-sign-on"与调用web-api的客户端的windows-os的登录用户。

到目前为止我做了什么:

更改了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),
});

除了验证密码之外,提供程序应该与生成用户名和密码请求的令牌的ApplicationOAuthProvider几乎相同。 不幸的是,请求中没有针对&#34; / IdentityToken&#34; -endpoint设置的用户/身份。

任何人都可以帮我解决这个问题,还是我完全走错了路?

0 个答案:

没有答案