加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-web-api – 使用OWIN SelfHost和Windows身份验证的WebAp

发布时间:2020-12-16 00:12:17 所属栏目:asp.Net 来源:网络整理
导读:我有一个控制台应用程序SERVER,它使用OWIN自托管托管WebApi控制器,并在名为“ServiceTest1”的自定义帐户下运行. 在同一台机器上,我有另一个在“ServiceTest2”帐户下运行的控制台应用程序CLIENT,我想在SERVER中捕获“ServiceTest2”调用控制器操作.然而: W
我有一个控制台应用程序SERVER,它使用OWIN自托管托管WebApi控制器,并在名为“ServiceTest1”的自定义帐户下运行.

在同一台机器上,我有另一个在“ServiceTest2”帐户下运行的控制台应用程序CLIENT,我想在SERVER中捕获“ServiceTest2”调用控制器操作.然而:

> WindowsIdentity.GetCurrent()始终是“ServiceTest1”.
> Thread.CurrentPrincipal是未经身份验证的GenericIdentity.
> RequestContext.Principal为null.
>用户为空.

我需要做什么才能使这个WebApi OWIN自托管以获取呼叫者的Windows身份?

解决方法

关于您如何实施Windows身份验证,您的问题有点不清楚.

启用Windows身份验证:

public class Startup
{
    public void Configuration(IAppBuilder app)
    {
        HttpListener listener = (HttpListener)app.Properties["System.Net.HttpListener"];
        listener.AuthenticationSchemes = AuthenticationSchemes.IntegratedWindowsAuthentication;

        // ...
    }
}

让用户进入OWIN中间件:

public async Task Invoke(IDictionary<string,object> env)
{
    OwinContext context = new OwinContext(env);
    WindowsPrincipal user = context.Request.User as WindowsPrincipal;

    //...
}

获取Web API控制器中的用户:

// In a web api controller function
WindowsPrincipal user = RequestContext.Principal as WindowsPrincipal;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读