<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Exchange Server">
<!-- converted from rtf -->
<style><!-- .EmailQuote { margin-left: 1pt; padding-left: 4pt; border-left: #800000 2px solid; } --></style>
</head>
<body>
<font face="Consolas" size="2"><span style="font-size:10.5pt;">
<div>Hi,</div>
<div>&nbsp;</div>
<div>I feel sure that this is (or should be) a FAQ, but I don't see it being asked or answered anywhere (maybe I&#8217;ve looked in the wrong places).</div>
<div>&nbsp;</div>
<div>I'd like to limit access to a SP to users that are members of a specific group.</div>
<div>&nbsp;</div>
<div>At the moment I have a filter policy like this:</div>
<div>&nbsp;&nbsp;&nbsp; &lt;afp:AttributeFilterPolicy id=&quot;groupauthz-filter&quot;&gt;</div>
<div>&nbsp;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;afp:PolicyRequirementRule xsi:type=&quot;basic:AND&quot;&gt;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;basic:Rule xsi:type=&quot;basic:AttributeRequesterString&quot; value=&quot;<a href="https://testsp.example.com/shibboleth">https://testsp.example.com/shibboleth</a>&quot; /&gt;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;basic:Rule xsi:type=&quot;basic:AttributeValueString&quot; attributeID=&quot;isMemberOf&quot; value=&quot;cn=myGroup, ou=Groups,dc=example,dc=com&quot;/&gt;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/afp:PolicyRequirementRule&gt;</div>
<div>&nbsp;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;afp:AttributeRule attributeID=&quot;transient-id&quot;&gt;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;afp:PermitValueRule xsi:type=&quot;basic:ANY&quot;/&gt;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/afp:AttributeRule&gt;</div>
<div>&nbsp;</div>
<div>&nbsp;&nbsp;&nbsp; &lt;/afp:AttributeFilterPolicy&gt;</div>
<div>&nbsp;</div>
<div>This works for some cases: if the user is a direct member of the group, they have an isMemberOf attribute that matches the value, the policy matches and they get access to the SP.</div>
<div>However, we have nested group memberships, e.g. &quot;userA&quot; is a member of &quot;groupB&quot;, which is a member of &quot;myGroup&quot;, so userA doesn't actually have an isMemberOf attribute that matches myGroup.</div>
<div>&nbsp;</div>
<div>So... is there a straightforward way of doing nested group authorization in Shibboleth? Our group memberships are in an openLDAP directory at the moment. One approach that I can see would be to maintain a &quot;flattened&quot; representation of group membership
(perhaps in a database rather than bloating the directory), but it would be nice if there was a more elegant solution.</div>
<div>&nbsp;</div>
<div>Steve.</div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">&nbsp;</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">&nbsp;</span></font></div>
</span></font>
</body>
</html>