指定Windows身份验证方案和角色不起作用

时间:2019-02-26 01:57:40

标签: asp.net-core authorization asp.net-core-security

如何指定AuthenticationSchemeWindows并检查用户是否是广告组的成员?

当我指定AuthenticationScheme时,设置Roles不再有效,为什么不呢?以及我该如何解决?

public class SomeController : Controller
{
    //this works
    [Authorize(Roles = @"SOME.DOMAIN\SOME GROUP")]
    public IActionResult SomeAction(){ ... }

    //this works
    [Authorize(AuthenticationSchemes = "Windows")]
    //this doesn't work
    //[Authorize(Roles = @"SOME.DOMAIN\SOME GROUP", AuthenticationSchemes = "Windows")]
    public ActionResult SomeAction2(){ ... }
}

Full sample on GitHub


某些背景

我们有一个名为SOME GROUP的广告组,该用户必须是执行某些操作的成员。在网络应用的其他部分,我们使用的是Cookie身份验证,因此我需要在此特定控制器中指定身份验证方法。

参考:Authorize with a specific scheme in ASP.NET Core

2 个答案:

答案 0 :(得分:0)

Windows身份验证是different的所有其他身份验证处理程序。 ASP.NET不执行身份验证,Windows组件执行身份验证,然后将其创建的身份的句柄传递给ASP.NET Core。它不是为Windows匿名用户设计的,也不是要与其他身份验证类型混合使用的,而是Windows和Anonymous,或者仅仅是Windows。

不支持将其与其他任何事物混合,因此即使它确实起作用,也不必限制方案。

答案 1 :(得分:0)

结果是,Theatre(t_name, city, sinceYear); Actor(a_id, a_name, birthYear, city); Play(p_id, title, playwright, director, year); Role(a_id, p_id, role, t_name); Theatre: Abima|tel aviv|1/1/1960 Miskan|beer sheba|20/2/1970 Akamri|haifa|15/3/1989 Actor: 204458952|Dani|22/1/1993|sderot 221354875|Osher|23/8/1995|beer sheba 251445841|Avi|5/12/1998|haifa 304226152|Noa|12/5/1992|tel avia 304804123|Shir|10/6/1990|beer sheba Play: 111|Meri lo|Lior|Hanoh levin|2010 222|Tov agmad|Asaf|Nisim Aloni|2016 333|Songs|Ami|Hanoh levin|2018 444|Run it|Sami|Nisim Aloni|2010 Role: 304804123|111|meri|Abima 304226152|111|sonia|Abima 251445841|222|tov tov|Miskan 204458952|222|gamad |Abima 221354875|333|prince|Akamri 304804123|222|princes|Abima 被保留在 SELECT a_id, a_name FROM ( Select * FROM Actor JOIN Play, Role ON Actor.a_id=Role.a_id AND Role.p_id=Play.p_id WHERE director='Hanoh levin') AND NOT EXISTS ( Select * FROM Actor JOIN Play, Role ON Actor.a_id=Role.a_id AND Role.p_id=Play.p_id WHERE director='Nisim Aloni'); 对象中,使我们可以检查组/角色成员身份。

内联示例

WindowsIdentity

JNA


政策示例

HttpContext.User

Full source