Skip to content

Kramerius pro koronavirovou krizi

JanMeritus edited this page Apr 17, 2020 · 19 revisions

Kramerius pro VŠ - konfigurace krameria pro dobu korovavirové krize

GIT repozitář se vzorovou konfiguraci

Placeholder kramerius.host v konfiguračních souborech a názvech adresářů přijde nahradit za jméno serveru, na kterým poběží kramerius pro VŠ.

Konfigurace povolených IdP

NK v spolupráci s CESNET zřizuje postupně organizace pro VŠ a VVI mimo eduID. Pro jejich povolení a povolení IdP z federace eduID je potřebný ověřit platné členství v organizaci.

Aktuální exktrakt apache konfigurace pro povolený IdP

Konfigurace a instalace shibbolethu

Do /etc/yum.repos.d/shibboleth.repo dát:

[shibboleth]
name=Shibboleth (CentOS_7)
# Please report any problems to https://issues.shibboleth.net
type=rpm-md
mirrorlist=https://shibboleth.net/cgi-bin/mirrorlist.cgi/CentOS_7
gpgcheck=1
gpgkey=https://download.opensuse.org/repositories/security:/shibboleth/CentOS_7/repodata/repomd.xml.key
enabled=1

A spustit:

yum install shibboleth.x86_64 -y

Upravit konfiguraci shibbolethu v adresáři /etc/shibboleth/ podle vzoru:

  • shibboleth2.xml
  • metadata-template.xml

Do souboru attribute-map.xml přidat:

    <Attribute name="urn:oid:1.3.6.1.4.1.34998.3.3.1.11" id="voPersonExternalAffiliation"/>
    <Attribute name="urn:oid:1.3.6.1.4.1.5923.1.1.1.13" id="eduPersonUniqueId"/>

Konfigurace a instalace Apache

Nainstalovat apache web server a smazat úvodní stránku:

yum install httpd.x86_64
rm /etc/httpd/conf.d/welcome.conf

Povolit poslouchání na portu 81 v /etc/httpd/conf/httpd.conf:

Listen 127.0.0.1.81

Nakonfigurovat Apache podle vzoru:

  1. Nastavení adresy Krameria se provádí v /etc/httpd/conf.d/000-kramerius.host.conf v:
RewriteCond %{ENV:authorized_by_attr} =true
RewriteCond %{ENV:authorized_by_idp} =true
RewriteRule ^/search/(.*) http://localhost:8080/search/$1 [P,L]
  1. V případě zoomify klienta povolit přístup na dlaždice imageserveru - zakomentovat či odstranit tento řádek:
RewriteCond %{QUERY_STRING} !stream=IMG_THUMB
RewriteRule /search/img - [R=403,NC,L]
  1. Vygenerovat filtr na IdP https://ds.eduid.cz/filter.php a obsah nakopírovat do /var/www/kramerius.host/wayf-filter.txt
  2. Vygenerovat soubor pro autorizaci podle IdP:
scripts/auth_idp.rules.php  /var/www/kramerius.host/wayf-filter.txt > /etc/httpd/conf.d/auth_idp.rules

Pokud chcete povolit autentizaci i pro VO s využitím Perunu, tak spusťte - první argument skriptu je soubor s WAYF filtrem, další nepovinné parametry jsou dodatečné IdP, které nejsou zahrnuté ve filtru:

scripts/auth_idp.rules.php  /var/www/kramerius.host/wayf-filter.txt "https://login.cesnet.cz/idp/" > /etc/httpd/conf.d/auth_idp.rules

Aby Perun fungoval, tak se musíte ještě zaregistrovat dle instrukcí eduid.cz

  1. Zeditovat ve /var/www/kramerius.host/ soubory nedostatecne-opravneni a podminky-zpristupneni.
  2. Zvalidovat metadata stažená z https://kramerius.host/Shibboleth.sso/Metadata validátorem a poté poslat do federace eduid.cz podepsaným mailem - viz stránky federace eduId.cz.

Autorizace uživatelů

Autorizovaný uživatel musí:

  • autentizovat se povoleným IdP - samotný WAYF filtr nestačí, pokročilý uživatel se může se znalostí správné URL přihlásit jakýmkoliv IdP, takže to na straně Apache musíme hlídat v souboru /etc/httpd/conf.d/auth_idp.rules, který se generuje na základě WAYF filtru skriptem scripts/auth_idp.rules.php:
...
SetEnvIf Shib-Identity-Provider https\://idp\.amu\.cz/idp/shibboleth authorized_by_idp=true
...
  • musí mít správné atributy:
  1. Buď mít member v affiliation - přihlášení přes institucionální IdP:
SetEnvIf affiliation ^(.*)(member@(.+))(.*)$ authorized_by_attr=true
  1. V případě propojených účtů a přihlášením přes sociální sítě pak affilace chodí v voPersonExternalAffiliation:
SetEnvIf voPersonExternalAffiliation ^(.*)(member@ucl\.cas\.cz)(.*)$ authorized_by_attr=true
  1. Nebo musí být členem virtuální organizace (VO) v perunu, která je povolená v konfiguraci a chodí v atributu entitlement - musí zažádat o členství ve VO a nechat si ji schválit správcem VO:
SetEnvIf entitlement ^(.*)(urn\:geant\:cesnet\.cz\:group\:einfra\:Affiliations\:ucl\.cas\.cz#perun\.cesnet\.cz)(.*)$ authorized_by_attr=true

Blokování uživatelů

Přístupy se logují do souboru /var/log/httpd/kramerius_vs_access_log, u uživatele se loguje eppn a eduPersonUniqueId, které je tu kvůli sociální sítím, které neposílají eppn.

Přidat toto pravidlo do /etc/httpd/conf.d/000-kramerius.host.conf - viz komentář:

# Blokovani pristupu pro konkretniho uzivatele
SetEnvIf eppn ^1@mzk\.cz$ authorized_by_attr=false

Některé IdP neposkytují eppn, pak použít eduPersonUniqueId:

SetEnvIf eduPersonUniqueId ^1@mzk\.cz$ authorized_by_attr=false

Konfigurace a instalace Klienta

Použijte poslední verzi klienta v1.7.1

Tato verze není výhradně určena pro otevřeného Krameria pro VŠ. Jen se rozšířila možnost konfigurace. http://www.digitalniknihovna.cz/ a https://kramerius-vs.mzk.cz/ používají stejnou verzi klienta, jen mají specifickou konfiguraci.

Příklad konfigurace klienta https://kramerius-vs.mzk.cz/

var APP_GLOBAL = {
  share_url: "http://www.digitalniknihovna.cz/mzk/uuid/${UUID}",
  ga: "UA-00000000",
  enablePeriodicalVolumesYearsLayout: true,
  enablePeriodicalIsssuesCalendarLayout: true,
  defaultPeriodicalVolumesLayout: "years",
  defaultPeriodicalIssuesLayout: "calendar",
  publicFilterDefault: false,
  bigHomeLogo: true,
  hideHomeTitle: false,
  advancedSearch: false,
  logoutUrl: 'https://kramerius-vs.mzk.cz/Shibboleth.sso/Logout?return=https://kramerius-vs.mzk.cz/podminky-zpristupneni',
  showMetadata: 'never',
  showCitation: 'allways',
  showSharing: 'allways',
  showPdfGeneration: 'never',
  showPrintPreparation: 'never', 
  showPageJpeg: 'never', 
  showPageOcr: 'never', 
  showTextSelection: 'never', 
  showImageCrop: 'never',
  newestAll: true,
  aboutPage: {
    cs: '/assets/shared/about.cs.html',
    en: '/assets/shared/about.en.html'
  },
  footer: {
    cs: '/assets/shared/footer.cs.html',
    en: '/assets/shared/footer.cs.html'
  },
  krameriusList: [
    {
      title: "Národní digitální knihovna pro studenty VŠ",
      subtitle: "Určeno pro pedagogy a vědecké pracovníky institucí na úrovni vysokých škol a jejich studenty",
      code: "mzk2",
      logo: 'https://kramerius-vs.mzk.cz/assets/shared/logo.png',
      url: 'https://kramerius-vs.mzk.cz',
      richCollections: true,
      joinedDoctypes: true,
      lemmatization: false,
      iiif: false,
      mapSearch: true,
      customRightMessage: true,
      doctypes: ['monograph', 'periodical', 'map', 'graphic', 'archive', 'manuscript', 'soundrecording', 'sheetmusic'],
      filters: ['doctypes', 'authors', 'keywords', 'geonames', 'collections', 'locations', 'languages'],
      hiddenLocks: true
    }
  ]
};

Následující hodnoty jsou buď nové ve verzi 1.7.1 a/nebo specifické pro otevřeného VŠ klienta.

share_url

Šablona odkazů pro sdílení a odkazy u citací odkazuje na jiného klienta. https://kramerius-vs.mzk.cz/ je dočasný klient a není vhodné na něj odkazovat z citací či generovaných permanentních odkazů. Použije se tedy odkaz na stejný dokument na http://www.digitalniknihovna.cz Použijte odkaz na svého běžného klienta, který by měl být nadmnožinou VŠ klienta a tuďíž obsahovat všechny odkazované objekty

logoutUrl

Je-li vyplněno, pak se v toolbaru klienta zobrazí odkaz Odhlásit vedoucí na vyplněnou hodnotu. Použijte hodnotu VS_KRAMERIUS/Shibboleth.sso/Logout?return=VS_KRAMERIUS/podminky-zpristupneni

showMetadata, showCitation, showSharing, showPrintPreparation, showPdfGeneration, showPageJpeg, showPageOcr, showImageCrop, showTextSelection

Nastavuje viditelnost tlačítek pro Metadata, Sdílení, Citace, Příprava tisku, PDF, JPEF, Textový přepis, Výřez obrázku, Výběr textu. Každé může mít hodnotu

  • allways = vždy zobrazit
  • never = vždy schovat
  • public = zobrazit jen u veřejných dokumentů

Tady se skryjí všechna tlačítka, která souvisí se stahováním obrázků nebo plných textů a ponechají se pouze tlačítka Sdílet a Citace

newestAll

Mezi nejnovějšími na hlavní stránce se zobrazí také neveřejné dokumenty

subtitle

Podtitulek na hlavní stránce (tam kde bývalo Digitální knihovna Kramerius)

iiif

Zde je vypnuto a použije se Zoomify. Přes IIIF je možné získat obrázky v plném rozlišení. Celý IIIF Image API endpoint je potom blokovaný na úrovni Apache

filters

Ve fiters chybí 'accessibility‘, čímž se skryje filtr dostupnost v hledání, procházení a zaškrtávátko Pouze veřejné na hlavní stránce

hiddenLocks

Kompletně skryje zámečky v celé aplikaci

Clone this wiki locally