Loading...
 
Single-Sign-On for DownloadManager

Links


mod_auth_pubtkt with Debian-Apache

  • we assume, apache is already installed and you are familiar with apache configuration
  • we assume you have read the mod_auth_pubtkt documentation
  • in debian install the package libapache2-mod-auth-pubtkt
    # apt-get install libapache2-mod-auth-pubtkt
  • generate a pub/private keypair. We use DSA, see pubtkt manual
    # openssl dsaparam -out dsaparam.pem 1024
    # openssl gendsa -out privkey.pem dsaparam.pem
    # openssl dsa -in privkey.pem -out pubkey.pem -pubout
    • the pubkey.pem is needed by the pubtkt apache module
    • the privkey.pem must be installed on the B-Fabric Server (keep it secret!!!)
  • copy pubkey.pem to /etc/apache2/pubkey.pem
  • create a apache config file for pubtkt with the reference to the public key
  • add a alias to the data downloaded via downloadmanager in the apache config
  • add the AuthType and some configuration options for mod_auth_pubtkt to the apache config
    • TKTAuthCookieName correspond to the cookie name generated by B-Fabric
  • apache config example:
    <IfModule mod_auth_pubtkt.c>
    TKTAuthPublicKey /etc/apache2/pubkey.pem
    Alias /dm /srv/www/DownloadManager
    <Directory /srv/www/DownloadManager>
            AuthType mod_auth_pubtkt
            TKTAuthCookieName auth_cookie
            TKTAuthDigest SHA256
            require valid-user
    </Directory>
    </IfModule>
  • every project directory needs its own security token, which can be configured in an apache config file
    <IfModule mod_auth_pubtkt.c>
      <Location /dm/p1>
        TKTAuthToken "1"
      </Location>
      <Location /dm/p2>
        TKTAuthToken "2"
      </Location>
    </IfModule>

Configure B-Fabric for Downloadmanager

Storage

  • add an access to the storage of type "dm" with protocol "http"

System Properties

  • the property "downloadManagerEnabled" needs to be set to "true"
  • the property "pubtktGeneratorFilePath" must point to the script which generates the cookie, as described in the pubtkt manual

Create cookie script

  • There is a script in bfabric source: downloadmanager/src/misc/mkpubtkt.sh
  • Best build one on your own based this piece of bash code
    # first argument is the username
    _UID="$1"
    # second argument are the comma seperated tokens
    _TOKENS="$2"
    
    # check for openssl 
    _OPENSSL=$( which openssl )
    [ -z "${_OPENSSL}" ] && exit 1
    
    # check for the privat key 
    _PRIVKEY="/path/to/privkey.pem"
    [ -r "${_PRIVKEY}" ] || exit 1
    
    # same as  in apache pubtkt config TKTAuthCookieName 
    _TKTNAME="auth_cookie"
    # generate the time in seconds the cookie is valid (1 day)
    _VALIDUNTIL=$( date --date='tomorrow' +%s )
    _GRACEPERIOD=$_VALIDUNTIL
    _UDATA=""
    
    # generate the cookie data
    _COOKIE="uid=${_UID};validuntil=${_VALIDUNTIL};graceperiod=${_GRACEPERIOD};tokens=${_TOKENS};udata=${_UDATA}" 
    # sign it
    _SIG=$( echo -n "${_COOKIE}" | "${_OPENSSL}" dgst -sha256 -sign "${_PRIVKEY}" | "${_OPENSSL}" enc -base64 -A )
    
    # echo to stdout
    echo "${_TKTNAME}=${_COOKIE};sig=${_SIG}"


Created by schmidt. Last Modification: Friday February 2, 2024 13:26:48 CET by tuerker.