什么是.NET的主要人物?

use*_*696 34 .net c# security

在谈论.NET中的身份时,我们有了Principal的想法.有接口IPrincipal,并与它一起实现ClaimsPrincipal.我们甚至可以随时访问该接口的一个实现实例Thread.CurrentPrincipal.

现在,我从未明白这个校长是什么.实际上,起初我认为它代表了当前用户的身份.但事实并非如此,实际上还有另一个界面IIdentity和实现ClaimsIdentity.搜索一下我在MSDN上发现了以下内容:

主体对象表示代表其运行的用户的安全上下文,包括该用户的身份(IIdentity)以及它们所属的任何角色.

代表代码运行的用户的这种安全上下文真的意味着什么?我想我还没有得到它应该代表什么.

Asa*_*din 18

在授权访问资源或运行某些代码的能力时,仅仅知道哪个用户正在授权该操作,但在授权它的角色是不够的.

可以认为这与提升shell时大致相同:shell现在在不同的主体(具有更多权限)下运行,即使主体的身份仍然相同(您的用户帐户).

IIdentity类型侧重于认证问题,即确定系统已知的身份实际上属于想要在该身份下行动的代理.这是授权任何事情的必要先决条件,但不是整个故事.


ror*_*.ap 10

委托人是一个封装身份和角色的抽象事物,因此它是运行代码的安全上下文.这可以是Windows身份(即Windows或Active Directory用户帐户)和Windows"角色",也称为"组",或者它可以是独立于Windows用户和角色的身份/角色,但仍可在多个用户和角色中使用应用.第三,它也可以是仅在您的应用程序中定义的身份和角色的自定义概念.

安全上下文不是一个静态的东西; 可以通过调整主体的角色来更改它,从而为身份(用户)和在安全上下文下运行的应用程序提供更多或更少的权限.

这是一个开始学习更多相关内容的好地方:https: //msdn.microsoft.com/en-us/library/z164t8hs.aspx


Wik*_*hla 5

描述说,主体是身份加角色。

其实很简单

public interface IPrincipal 
{
    IIdentity Identity { get; }
    bool IsInRole( string role );
}
Run Code Online (Sandbox Code Playgroud)

抽象它的想法非常重要。虽然原本只有少数实现(包括WindowsPrincipalRolePrincipalGenericPrincipal)后来其他implementatiins介绍(中ClaimsPrincipal为例)。而且许多遗留代码可以无缝升级到新的实现,具有所有优点,但无需更改其他任何内容。