보안이 사이트 맵을 트리밍 할 때 단일 자식 노드에 영향을 미치는 방법은 무엇입니까?
-
05-07-2019 - |
문제
ASP.NET 사이트가 있는데, 여기에는 일부 페이지에 대한 액세스를 제한하기 위해 Windows 인증 및 Active Directory 역할을 사용하려고합니다. 나는 a를 보았다 Scott Gu의 튜토리얼 페이지, 그러나 나는 내가 원하는 것을 성취 할 수 없습니다.
나는 내 근절의 루트 노드를 무시하고있다 SiteMapDataSource
. 모든 사용자에게 "문서"노드를 표시하고 싶지만 "검색"및 "업로드"역할을 두 가지 역할로 표시하는 것을 제한하고 싶습니다. 나는 "domain extalrole"에 있지만 "도메인 madeuprole"에 있지 않습니다. 아래의 siteemap과 web.config를 사용하면 모든 노드가 표시됩니다. 내가 제거하면 roles="*"
"문서"노드 (Scott Gu가 제안한대로)에서 노드가 표시되지 않습니다.
사용자 정의 코드를 작성하지 않고도 개별 자식 노드의 표시를 제한 할 수있는 방법이 있습니까?
이것은 내 사이트 맵입니다 :
<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0">
<siteMapNode url="~/Default.aspx"
title="Home">
<siteMapNode title="Documents" roles="*">
<siteMapNode url="~/Documents/Search.aspx"
title="Search Documents"
roles="DOMAIN\validrole" />
<siteMapNode url="~/Documents/Upload.aspx"
title="Upload Documents"
roles="DOMAIN\madeuprole" />
<siteMapNode url="~/Documents/Publish.aspx"
title="Publish Documents" />
</siteMapNode>
<siteMapNode title="Users" roles="*">
<siteMapNode url="~/Users/Search.aspx"
title="Search Users"
roles="DOMAIN\validrole" />
</siteMapNode>
</siteMapNode>
</siteMap>
그리고 이것은 내 web.config의 관련 섹션입니다.
<authentication mode="Windows"/>
<authorization>
<allow roles="DOMAIN\validrole"/>
<deny users="*"/>
</authorization>
<siteMap defaultProvider="XmlSiteMapProvider" enabled="true">
<providers>
<add name="XmlSiteMapProvider"
description="Default SiteMap provider."
type="System.Web.XmlSiteMapProvider"
siteMapFile="Web.sitemap"
securityTrimmingEnabled="true" />
</providers>
</siteMap>
해결책
정렬 - Web.Config 파일의 페이지에 인증을 설정해야합니다.
<location path="Documents/Upload.aspx">
<system.web>
<authorization>
<allow roles="DOMAIN\madeuprole"/>
<deny users="*"/>
</authorization>
</system.web>
</location>
나는 길로 이것을 시도했다 "~/Documents/Upload.aspx"
, 그러나 그것은 작동하지 않았습니다. 구성 파일과 관련된 경로 여야합니다.
또한 사이트 맵 노드에 URL을 넣어야했습니다.
<siteMapNode title="Documents" roles="*" url="Made-Up.aspx">
왜 그런지 모르겠지만 모든 것이 사라지는 것을 막았습니다. URL을 표시하지 않으므로 메이크업이 트릭을 수행합니다.