Authorization Manager

The Authorization Manager is configured by an XML file which contains a ClientAuthorizationConfig element, which in turn contains a Client element for every client service allowed to use Moria.

The actual service authentication is performed outside of Moria (by the application server) so password and/or certificates must be configured in the server that performs the authentication (for example, Apache or Resin).

A Client element consists of the following:

  1. A required name attribute which is identical to the principal used for the client service's external authentication.
  2. A DisplayName child element with a text child element containing the full name of the client service. This is the service name that is presented on the login page.
  3. An URL child element with a text child element containing an URL pointing to the main page of the client service. This URL is used to connect a link from the displayed client service name (on the login page) to a page where the client service may describe itself to the user.
  4. A Home child element with a text child element that specifies which organization the client service belongs to. The short-form organization names should be consistent with short-form organization names appearing elsewhere in other configuration files, such as the Web Module configuration file. Not currently used.
  5. A Language child element with a text child element that gives the default language used on the web interfaces (such as the login web page) for this client service. This language will be used as the default language for the login page if the user has not previously selected another language. If not present the system-wide Moria default language will be used instead. Note that this two-character language code must match one of the two-character language codes defined in the Web Module configuration file.
  6. An Affiliation child element containing one or more Organization child elements, which again contain a text child element. The text child element should match the short-form organization names defined in the Web Module configuration file. Users belonging to one of these affiliated organizations may be authenticated against a secondary (or tertiary, and so on) authentication server (or location within the same authentication server) when using this service. This allows an organization to publish a service for which only a certain set of users may be authenticated without allowing these users to access other services (unless their organization is also affiliated with these services, of course).
  7. An OrgsAllowed child element containing one or more Organization child elements, which again contain a text child element. The text child element should match the short-form organization names defined in the Web Module configuration file. Users belonging to one of these allowed organizations may access this client service; others cannot.
  8. An Attributes child element containing one or more Attribute child elements. The Attribute child element(s) contain the attributes name (gives the physical name of a physical user attribute the client service is allowed to read), sso (true or false; tells whether the client service is allowed to read this attribute when using SSO), and secLevel (used to classify an attribute request according to security level and optionally display a warning/description to the user on the login page). Security levels range from 0 to 2, with 0 being the lowest. Note that for a client service to be allowed a ticket granting ticket the configuration must be allowed to read the tgt attribute and use it for SSO.
  9. The Operations child element contains one or more Operation child elements for those operations the client service is allowed to perform. The Operation child element has an attribute name specifying the allowed operation's name. The following operations are defined:
    OperationExplanation
    InteractiveAuthAllow normal interactive authentication.
    DirectAuthAllow the user's username/password to be sent through the client service. Handle with care, as this is a potential security pitfall.
    ProxyAuth Allows a subsystem to perform user authentication using a proxy ticket. Also needed for the parent system in order to be able to issue a proxy ticket.
    VerifyUserExistenceAllows the client service to check whether a given user actually exists.
  10. The Subsystems child element contains a Subsystem child element for every secondary client service the primary client service is allowed to use proxy authentication in cooperation with (that is, which secondary client service(s) are allowed to make use of proxy tickets issued to the primary client service). Each secondary client service must be configured to be allowed to use the operation ProxyAuth.

Example Authorization Manager configuration file:

<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<ClientAuthorizationConfig>
    <Client name="test">
        <DisplayName>Foobar</DisplayName>
        <URL>http://www.feide.no/</URL>
        <Home>uio.no</Home>
        <Language>no</Language>
        <Affiliation>
            <Organization name="uninett.no"/>
            <Organization name="uio.no"/>
        </Affiliation>
        <OrgsAllowed>
            <Organization name="uninett.no"/>
            <Organization name="uio.no"/>
       </OrgsAllowed>        
        <Attributes>
            <Attribute name="attr1" sso="true" secLevel="0"/>
            <Attribute name="attr2" sso="true" secLevel="1"/>
            <Attribute name="attr3" sso="false" secLevel="2"/>
            <Attribute name="tgt"   sso="true" secLevel="0"/>
        </Attributes>
        <Operations>
            <Operation name="DirectAuth"/>
            <Operation name="InteractiveAuth"/>
            <Operation name="VerifyUserExistence"/>
            <Operation name="ProxyAuth"/>
        </Operations>
        <Subsystems>
            <Subsystem name="sub1"/>
            <Subsystem name="sub2"/>
        </Subsystems>
    </Client>
    
    <Client name="sub1">
        <DisplayName>Subsystem 1</DisplayName>
        <URL>http://www.feide.no/</URL>
        <Home>uio.no</Home>
        <Language>no</Language>
        <Affiliation>
            <Organization name="uninett.no"/>
            <Organization name="uio.no"/>
        </Affiliation>
        <OrgsAllowed>
            <Organization name="uninett.no"/>
            <Organization name="uio.no"/>
        </OrgsAllowed>
        <Attributes>
            <Attribute name="attr1" sso="true" secLevel="0"/>
            <Attribute name="attr2" sso="true" secLevel="1"/>
            <Attribute name="attr3" sso="false" secLevel="2"/>
        </Attributes>
        <Operations>
            <Operation name="ProxyAuth"/>
        </Operations>
        <Subsystems>
        </Subsystems>
    </Client>
</ClientAuthorizationConfig>