MOSS身份安全的初步研究

原创 2012年03月21日 08:28:58

MOSS身份安全的初步研究

MOSS是运行在IIS中的 ASP.NET应用程序,所以我们在学习、研究MOSS的安全机制时必需对IIS和ASP.NET的安全机制一并考虑。下图是一个MOSS安全机制的全貌。

        一、IIS身份验证

处于最外围的是IIS的身份验证机制。Intranet中通常使用ACL身份验证或集成域身份验证。ACL是指Windows文件系统的访问控制列表,IIS通过客户端提供的用户名、密码与请求的文件ACL进行比较,可验证身份、权限;集成域身份验证的工作模式,委托域控制器进行身份验证,最广泛的身份验证方式。

         二、ASP.NET身份安全

通过了外围IIS的身份验证,用户就可以请求到MOSS的页面了。MOSS页面代码如果要操作本地资源,那么ASP.NET需要决定按照什么样的身份来执行它。ASP.NET给开发人员提供了指定这个身份的可能——Web应用程序的配置文件中Indentity节点。下面列举了该节点三种可能的配置。

 

<identity impersonate="false" /> (或无该节点配制)

使用运行Web应用程序的帐号身份来执行ASP.NET代码,默认情况下为本地“Network Service”帐号。

<identity impersonate="true" />

要求IIS传递客户端身份,并使用该身份来执行ASP.NET代码

<identity impersonate="true"  username = “xxx” password = “xxx”/>

使用username指定的帐号身份来执行ASP.NET代码

MOSS中一般使用表中的第二种配制,把客户端身份传递到web应用程序,以判断其访问MOSS内容的权限。

三、MOSS执行安全

         部署在MOSS网站上的程序集的安全性受到两个方面的制约:一是程序集自身的受信级别,二是可调用程序集身份的受信级别。要提高程序集自身的受信级别,可以把程序集部署到GAC中,也在Web.config中把站点信任级别设为Full,如下所示:

         <trust level=”Full” originUrl = “” />

         实际上,这两种提升程序集权限的方法都有缺点,前者使程序集具有了本机的所有执行权限,后者使站点上所有程序集具有了Full权限。最安全的做法是编写一个策略文件,在策略文件中声明程序集有权限进行的操作。策略文件的写法,请看下面的示例,更详细的说明请查阅MOSS开发参考:

 

<configuration>

    <mscorlib>

        <security>

            <policy>

                <PolicyLevel version="1">

                    <SecurityClasses>

                        <SecurityClass Name="UnionCodeGroup" Description="System.Security.Policy.UnionCodeGroup, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>

                    </SecurityClasses>

                        <CodeGroup

                                class="UnionCodeGroup"

                                version="1"

                                PermissionSetName="FullTrust">

                            <IMembershipCondition

                                    class="UrlMembershipCondition"

                                    version="1"

                                    Url="$AppDirUrl$/_app_bin/*"

                            />

                        </CodeGroup>

                        <CodeGroup

                                class="UnionCodeGroup"

                                version="1"

                                PermissionSetName="SPRestricted">

                            <IMembershipCondition

                                    class="UrlMembershipCondition"

                                    version="1"

                                    Url="$AppDirUrl$/*"

                            />

                        </CodeGroup>

                        <CodeGroup

                                class="UnionCodeGroup"

                                version="1"

                                PermissionSetName="FullTrust">

                            <IMembershipCondition

                                    class="UrlMembershipCondition"

                                    version="1"

                                    Url="$CodeGen$/*"

                            />

                        </CodeGroup>

                        <CodeGroup class="UnionCodeGroup" version="1" PermissionSetName="Nothing">

                                <IMembershipCondition

                                class="ZoneMembershipCondition"

                                version="1"

                                Zone="MyComputer" />

                            <CodeGroup

                                    class="UnionCodeGroup"

                                    version="1"

                                    PermissionSetName="FullTrust"

                                    Name="Microsoft_Strong_Name"

                                    Description="This code group grants code signed with the Microsoft strong name full trust. ">

                                <IMembershipCondition

                                        class="StrongNameMembershipCondition"

                                        version="1"

                                        PublicKeyBlob="002400000480000094000000060200000024000052534131000400000100010007D1FA57C4AED9F0A32E84AA0FAEFD0DE9E8FD6AEC8F87FB03766C834C99921EB23BE79AD9D5DCC1DD9AD236132102900B723CF980957FC4E177108FC607774F29E8320E92EA05ECE4E821C0A5EFE8F1645C4C0C93C1AB99285D622CAA652C1DFAD63D745D6F2DE5F17E5EAF0FC4963D261C8A12436518206DC093344D5AD293"

                                />

                            </CodeGroup>

                            <CodeGroup

                                    class="UnionCodeGroup"

                                    version="1"

                                    PermissionSetName="FullTrust"

                                    Name="Ecma_Strong_Name"

                                    Description="This code group grants code signed with the ECMA strong name full trust. ">

                                <IMembershipCondition

                                        class="StrongNameMembershipCondition"

                                        version="1"

                                        PublicKeyBlob="00000000000000000400000000000000"

                                />

                            </CodeGroup>

                        </CodeGroup>

                    </CodeGroup>

                </PolicyLevel>

            </policy>

        </security>

    </mscorlib>

</configuration>

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

基于数字证书的UKEY安全登录 与身份认证技术研究

摘  要 本文在研究身份认证技术、uKey技术及Windows系统登录原理基础上,提出了基于数字证书的uKey身份认证与安全登录方案,设计了自定义登录模块,从而实现了使用uKey进行主机安全登录的功能...

HttpClient学习研究---第四章:HTTP authenticationHTTP身份验证

第四章。HTTP authenticationHTTP身份验证 HttpClient provides full support for authentication schemes d...

信息化社会身份研究提纲

  • 2014-03-29 16:57
  • 187KB
  • 下载

无密码身份验证:安全、简单且部署快速

我们知道,大多数人在访问网站时都使用同一套密码。对于那些缺少安全专家支持的 web 项目,如果用户在该网站的密码遭到泄露,那就可能伤及他的 Amazon 账户,我们真的要让用户承担这种风险么?此外,这...

以爬虫工程师身份谈谈Android端的信息安全

换了工作快二个月了,现在在当前公司爬虫+Android工程师.. 很久没写blog了,今天根据这段时间的爬数据 经验来浅谈是如果获取需要的数据的! 希望各位看官阅后在必要的时候有所防范。 不废话了,开...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)