Definir grupos de relaciones

Si se precisan varias relaciones para otorgar acceso a un determinado recurso, utilice la construcción RelationGroup. Sin embargo, una relación normalmente satisface la mayor parte de los requisitos para este escenario. Los grupos de relaciones contienen condiciones abiertas que son las condiciones pertenecientes al grupo de relaciones. Si tiene que definir los grupos de relaciones, deberá hacerlo mediante la definición de la información del grupo de relaciones en su archivo XML, o la modificación del archivo defaultAccessControlPolicies.xml.

<RelationGroup Name="aValue" OwnerID="Root Organization">
        <RelationCondition>
                <profile>                        
                    Relationship Chain Open Condition XML
                </profile>;
        </RelationCondition>;
</RelationGroup>;

Cadenas de relaciones

Cada grupo de relaciones consta de una o varias condiciones de apertura RELATIONSHIP_CHAIN, que se agrupan mediante los elementos andListCondition o orListCondition. Una cadena de relaciones es una serie de una o varias relaciones. La longitud de una cadena de relaciones la determina el número de relaciones de que consta. Para determinar la longitud de la cadena de relaciones, cuente el número de entradas <parmeter name= "X" value="Y"> en la representación XML de la cadena de relaciones. A continuación se muestra un ejemplo de una cadena de relaciones con una longitud de uno.

<openCondition name="RELATIONSHIP_CHAIN">
   <parameter name="RELATIONSHIP" value="aValue"/>
</openCondition>;
Donde:
aValue
Una serie que representa la relación entre el usuario y el recurso. Asegúrese de que la serie sea una de las relaciones comprobadas en el método fulfills del recurso.
Cuando una cadena de relaciones tiene una longitud de dos o más, se trata de una serie de dos relaciones. La primera entrada, <parmeter name= "X" value="Y">, es entre un usuario y una entidad de organización. La última entrada, <parmeter name= "X" value="Y">, es entre la entidad y el recurso de organización. Las entradas intermedias <parmeter name= "X" value="Y"> en la cadena son entre organizaciones. A continuación se muestra un ejemplo de una cadena de relaciones con una longitud de dos:
<openCondition name=RELATIONSHIP_CHAIN">
   <parameter name="aValue1" value="aValue2"/>
   <parameter name="RELATIONSHIP" value="aValue3"/>
</openCondition>;
Donde:
aValue1
Los valores posibles incluyen HIERARCHY y ROLE . HIERARCHY especifica que hay una relación jerárquica entre el usuario y la entidad de organización en la jerarquía de miembros. ROLE especifica que el usuario desempeña un rol en la entidad de organización. Si el valor de aValue1 es HIERARCHY, los valores posibles de aValue2 incluyen child. El hijo del valor devuelve la entidad de organización para la que el usuario es hijo directo en la jerarquía de miembros. Si el valor de aValue1 es ROLE, los valores posibles de aValue2 son cualquier entrada válida en la columna NAME de la tabla ROLE, que devuelve todas las entidades de organización para las que el usuario actual tiene este rol.
aValue3
Una serie que representa la relación entre una o varias entidades de organización recuperadas de evaluar el primer parámetro y el recurso. Este valor corresponde al parámetro relationship del método fulfills() del recurso protegible. Si se devuelve más de una entidad de organización al evaluar el parámetro aValue1, esta parte de RELATIONSHIP_CHAIN se satisface si al menos una de estas entidades de organización satisface la relación especificada por el parámetro aValue2.

Para obtener más información sobre cómo definir relaciones, consulte Definir relaciones.

Definición de grupos de relaciones de una sola cadena

Por ejemplo, para crear una política de control de acceso que imponga que un usuario debe pertenecer a la entidad de organización del recurso, cree un grupo de relaciones que esté compuesto de una cadena de relaciones que tenga una longitud de two.
<RelationGroup Name="MemberOf->;BuyerOrganizationEntity" OwnerID="RootOrganization">
   <RelationCondition>
      <profile>
         <openCondition name="RELATIONSHIP_CHAIN">
            <parameter name="HIERARCHY" value="child"/>
            <parameter name="RELATIONSHIP" value="BuyingOrganizationalEntity"/>
         </openCondition>
      </profile>
   <RelationCondition>
<RelationGroup>

La cadena de relaciones tiene una longitud de dos porque consta de dos relaciones diferentes.two La primera relación se produce entre el usuario y la entidad de organización padre. El usuario es el child en esta relación. En la segunda relación, el administrador de políticas de control de acceso comprueba si la entidad de organización satisface la relación BuyingOrganizationalEntity con el recurso. En otras palabras, devuelve true si se trata de la entidad de organización compradora del recurso.true

Otro ejemplo es una política de control de acceso que imponga que un usuario tenga el rol de representante de cuentas para la entidad de organización que es la entidad de organización compradora del recurso. De nuevo, esta política utiliza el grupo de relaciones que consta de una cadena de relaciones con una longitud de dos. La primera parte de la cadena busca todas las entidades de organización para las que el usuario tiene el rol de representante de cuentas. A continuación, para el conjunto de entidades de organización, el administrador de políticas de control de acceso comprueba si como mínimo una de ellas satisface la relación BuyingOrganizationalEntity con el recurso. Si es así, se devuelve un valor de true.

El ejemplo siguiente muestra cómo se define este tipo de grupo de relaciones:
<RelationGroup Name="AccountRep->BuyerOrganizationalEntity" OwnerID="RootOrganization">
   <RelationCondition>
      <profile>
          <openCondition name="RELATIONSHIP_CHAIN">
             <parameter name="ROLE" value="Account Representative"/>
             <parameter name="RELATIONSHIP" value="BuyingOrganizationalEntity"/> 
         </openCondition>
       </profile>
   <RelationCondition>
<RelationGroup>

Definición de grupos de relaciones de varias cadenas

Para componer un grupo de relaciones que contenga una relación de varias cadenas, especifique si el usuario debe cumplir todas las cadenas de relaciones o si el usuario debe cumplir como mínimo una de las cadenas de relaciones.

En el ejemplo siguiente, el usuario debe ser el creador del recurso y debe pertenecer a la entidad BuyingOrganizationalEntity especificada en el recurso. La primera cadena, que especifica que el usuario debe ser el creador del recurso, tiene una longitud de uno. La segunda cadena, que especifica que el usuario debe pertenecer a la entidad BuyingOrganizationalEntity especificada en el recurso, tiene una longitud de dos.
<RelationshipGroup Name="Creator_And_MemberOf->BuyerOrganizationalEntity" OwnerID="RootOrganization">
   <RelationCondition>
      <profile>
            <andListCondition>
               <openCondition name="RELATIONSHIP_CHAIN">
                  <parameter name="RELATIONSHIP" value="creator" />
               </openCondition>
               <openCondition name="RELATIONSHIP_CHAIN">
                  <parameter name="HIERARCHY" value="child"/>
                  <parameter name="RELATIONSHIP" value="BuyingOrganizationalEntity"/>
               </openCondition>
            </andListCondition>
      </profile>
   </RelationCondition>
</RelationGroup>

Si solicita al usuario que cumpla una de las dos cadenas de relaciones, cambie la etiqueta <andListConditon> por la etiqueta <orListConditon>.