【问题标题】:Force Windows Challenge强制 Windows 挑战
【发布时间】:2017-08-25 18:21:37
【问题描述】:

我有一个 AuthorizationProvider 需要同时使用 Anonymous 和 Windows,但我似乎无法使用 Windows 挑战:

if (principal == null || principal.Identity == null || string.IsNullOrWhiteSpace(principal.Identity.Name))
            {
                context.OwinContext.Authentication.Challenge();
                return Task.FromResult(0);
            }

是否需要设置其他配置值才能使该行正常工作? :context.OwinContext.Authentication.Challenge();

任何想法为什么这不起作用?我需要能够获得仅在启用 Windows 的情况下可以正常工作的 Windows 主体,但还需要启用匿名以便能够访问提供程序中的其他端点。

【问题讨论】:

    标签: c# asp.net .net asp.net-mvc identity


    【解决方案1】:

    简而言之,您应该在您的 Web 主机中启用 Windows 身份验证。 有不同的设置,具体取决于您使用的 Web 主机。

    配置 Web 主机后,您的控制器代码开始工作。

    OWIN 自托管

    在 OWIN Startup 类中配置 HttpListener 以接受两种身份验证模式:

    class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            var listener = (HttpListener)app.Properties["System.Net.HttpListener"];
    
            listener.AuthenticationSchemes = 
                AuthenticationSchemes.IntegratedWindowsAuthentication |
                AuthenticationSchemes.Anonymous;
    
            // Other initialization
        }
    }
    

    IIS

    如果您在 IIS 上托管应用程序,则应在 IIS 网站设置中为您的应用程序启用 Windows 身份验证模式:

    如果您没有看到身份验证图标或 Windows 身份验证模式,请安装以下 Windows 功能:

    Visual Studio Web 调试 (IIS Express)

    最后,为了方便从 Visual Studio 进行 Web 调试,您可以在项目属性中启用 Windows 身份验证。打开解决方案资源管理器并选择您的项目:

    然后打开“属性”选项卡并设置匿名和 Windows 身份验证:

    更多详情,您可以查看this article

    【讨论】:

    • 我在 IIS 中启用了 windows 身份验证,但是一旦我启用了匿名,我就可以获得 windows 用户帐户,只有启用了匿名。此行应该提示输入 windows creds context.OwinContext.Authentication.Challenge();但不起作用,所以不确定我是否需要设置其他设置。
    • @Fab 客户端是什么?是HttpClient吗?
    • @Fab btw 尝试明确指定身份验证模式:context.OwinContext.Authentication.Challenge("Ntlm")
    • 客户端是一个隐式流Javascript客户端。我尝试使用协商但没有运气。我重定向到授权服务器,然后使用 url 中的令牌重定向回来,解析它但是一旦我尝试调用服务器端点,请求就会因为 windows 和我试图匿名的原因而被拒绝好吧,所以我可以请求获取 JWT 密钥以在客户端验证令牌。
    猜你喜欢
    • 1970-01-01
    • 2014-12-21
    • 2018-01-21
    • 1970-01-01
    • 2020-01-16
    • 2017-06-23
    • 2013-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多