Authentifizierungsprozess für externe API-Clients
Authentifizierungsprozess für externe API-Clients
Eine wichtige Funktion von FUNDify ist die Bereitstellung einer API, die von externen API-Clients (z. B. der Technischen Universität Wien) genutzt werden kann, um Informationen zu kommentierten Anrufen abzurufen. Diese Informationen werden dann in ihren internen Tools angezeigt, z. B. auf einer Wiki-Seite.
Auf dieser Seite wird beschrieben, wie sich die Clients gegenüber der FUNDify-API authentifizieren können.
Es wird der Standard-oAuth-Client-Authentifizierungsfluss verwendet. Weitere Informationen hierzu finden Sie in dieser ausgezeichneten Dokumentation von Auth0: https://auth0.com/docs/get-started/authentication-and-authorization-flow/client-credentials-flow
Zugriff anfordern
Interessierte Parteien sollten das Kontaktformular ausfüllen und angeben, dass sie die FUNDify-API nutzen möchten.
Erstellen der Konten
- Die Konten werden vom TU Keycloak-Team erstellt.
- Beantragen Sie die Erstellung eines API-Clients; Sie sollten Ihnen Folgendes zur Verfügung stellen:
- Client-ID
- Client-Geheimnis
- Benutzer-ID des Dienstkontos
Festlegen von Berechtigungen für das Dienstkonto
Nachdem das Konto erstellt wurde, müssen in FUNDify die entsprechenden Berechtigungen konfiguriert werden.
Dazu gehören:
- Zuweisen der Rolle EXTERNAL_API_CLIENT zum Dienstkonto
- Festlegen der richtigen Zugehörigkeits-ID
Diese Eigenschaften werden über die FUNDify-Anwendung verwaltet.
Senden von Anmeldedaten an die anfragende Partei
Die API-Nutzer benötigen Folgendes:
- Client-ID (ähnlich wie ein Benutzername)
- Client-Geheimnis (ähnlich einem Passwort)
- Token-Endpunkt (ähnlich einer Anmeldeseite)
Die Client-ID und das Client-Geheimnis sind hochsensible Informationen und sollten über einen sicheren Kanal übertragen werden, beispielsweise über die Freigabefunktion eines Passwort-Managers (siehe 1Password Secure Sharing). Jeder, der Zugriff auf die Client-ID und das Client-Geheimnis hat, kann im Namen des Dienstkontos handeln.
Authentifizierung von APIs von Dritten
Zur Authentifizierung müssen Clients Folgendes tun:
- Ein Bearer-Token vom Token-Endpunkt abrufen.
- Dieses Token bei allen Anfragen an unsere API senden.
Der Token-Endpunkt lautet wie folgt:
https://id.arisnet.ac.at/realms/fundify/protocol/openid-connect/token
Code-Beispiel (cURL)
Mit dieser einfachen Anfrage kann ein Zugriffstoken abgerufen werden.
curl -X POST \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'grant_type=client_credentials' \
-d 'client_id=YOUR_CLIENT_ID' \
-d 'client_secret=YOUR_CLIENT_SECRET'
Um es zu verwenden, senden Sie es im Authorization-Header mit „Bearer“
curl -H "Authorization: Bearer"
Zusammengefasst können Sie Folgendes tun:
Den Zugriffstoken abrufen und in einer Variablen speichern
ACCESS_TOKEN=$(curl -X POST \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'grant_type=client_credentials' \
-d 'client_id=YOUR_CLIENT_ID' \
-d 'client_secret=YOUR_CLIENT_SECRET' | jq -r '.access_token')
Senden des Tokens auf Anfrage an die FUNDify-API
curl -H "Authorization: Bearer $ACCESS_TOKEN"
Folgende Institutionen nutzen dieses Tool:
- WWTF - Wiener Wissenschafts-, Forschungs- und Technologiefonds
| Name | Beschreibung | Description | Vocabulary |
|---|---|---|---|
| funding | Eine Drittmittelförderung in Form eine Geldbetrags für Forschungsaktivitäten. | Funding is an amount of money or an inkind equivalent value. | |
| id | Die ID des Programms/Calls oder der Laufenden Einreichung. | The id of the funding programme, call or ongoing call. | |
| type | Die Art der Förderung. | The type of the funding. | Funding type |
| name | Name der Entität | Name of Entity | |
| acronym | Das Akronym des Programms/Calls oder der Laufenden Einreichung. | The acronym of the funding programme/call or ongoing call. | |
| description | Qualitative Beschreibung des Programms/Calls. | Qualitative Description of the programme/call. | |
| startDate | Das Datum an dem das Förderprogramm begonnen hat. | The startdate of the funding programme. | |
| endDate | Das Datum an dem das Förderprogramm beendet wurde. | The enddate of the funding programme if a funding programme is not open anymore. | |
| funder | Verknüpfung von Förderprogramm und Fördergeber oder weiteren Geldgebern. | Linking of the funding programme and the funding body or further joint call parters. | |
| funderType (funder) | Die Rolle der Förderorganisation in der Abwicklung des Calls. | The role of the funding organisation in managing the call. | Funder type |
| id (funder) | Die ID der Förderorganisation. | The id of the funding organisation. | |
| fundingScheme | Die Art der finanziellen Unterstützung, die ein Call anbietet. | The type of financial support that is offered by a call. | Funding Type |
| legalType | Rechtlicher Typ der Förderung gemäß Universitätsgesetz. | Legal type of funding according to university law. | Legal Type |
| website | Der Link zum Förderprogramm/Call. | The link to the funding programme/call. | |
| characteristics | Klassifizierung der Eigenschaften eines Programms/Calls. | A classification of characteristics of the programme/call. | Funding Characteristics |
| targetGroup | Breite Definition der Zielgruppen nach Institutionstyp. | The target group adressed by the programme/call classified by organisation types. | Target Group |
| subject | Klassifikation der Wissenschaftszweige, die einreichberechtigt sind. | The subject classification(s) scientific disciplines which are eligible for funding. | Vocabulary (external) |
| fraction (subject) | Anteil bzw. Gewichtung der jeweiligen Wissenschaftszweige (bei mehrfacher Auswahl). | Fraction or proportion of the respective fields of science (in the case of multiple selection). | |
| thematicOrientation | Thematische Gruppierung von Calls, die keinem Förderprogramm zugeordnet sind. | Thematic clustering of calls that are not assigned to a funding programme. | |
| careerStage | Zielgruppen des Calls hinsichtlich der Karrierestufe der Antragssteller*innen. | Target group of the call with regard to the career stage of the applicants. | Career Stage |
| programmeTrack | Bezeichnung für eine Gruppe von Programmen. | The label for a group of programmes that are similar. | |
| partOf | Verknüpfung von Call zu Förderprogramm. | Chain up to the larger funding that encompasses this funding. | |
| amount | Gesamtsumme, die für die jeweilige Ausschreibung zur Verfügung steht. | The total amount of funding that is available for a specific call. | |
| callVolumeProjects | Die max. Anzahl an Projekte, die in einer Ausschreibung gefördert werden können | The maximum number of projects that can be funded in a specific call. | |
| decisionProcessDetails | Beschreibung des Auswahlverfahrens | Description of decision processes | |
| decisionProcess | Art des Auswahlverfahrens. | Types of decision processes. | Decision Process |
| dmpRequired | Angabe ob ein Datenmanagementplan gemäß den Anforderungen des Fördergebers erforderlich ist. | Indication of whether a data management plan is required according to the funder's guidelines. | |
| dmpGuidelines | Link zu den vom Geldgeber zur Verfügung gestellten Leitlinien für den Datenmanagementplan. | Link to the data management plan guidelines provided by the funder. | |
| ProjectStart | Angabe bis wann spätestens eine Projektstart zu erfolgen hat. | The lasted possbile date by which a funded project has to start. | |
| targetGroupSpecified | Beschreibung der Zielgruppe (Antragstellende) eines Programms bzw. eines Calls. | A description of the target groups adressed by the programme/call. | |
| eligibleApplicants | Genaue Beschreibung der Antragsberechtigten. | A description of the eligible applicants. | |
| eligibleApplicantsScope | Die Förderfähigkeit ist auf einen nationalen oder regionalen Bereich beschränkt. | The eligibility for funding is limited to a national or regional scope. | |
| eligibleApplicantsRegion | Antragsteller*innen aus diesen Regionen sind förderfähig. | Applicants from these regions are eligible. | |
| minProjectVolume | Die minimale Summe, die beantragt werden muss | The min. amount of money a proposal must claim | |
| maxProjectVolume | Die maximal mögliche Summe, die beantragt werden kann | The max. amount of money a proposal is elible to claim | |
| fullyFunded | Gibt an, ob ein Projekt zu 100 % durch die ausgeschriebene Förderung finanziert werden kann oder nicht. | Indicates whether or not a project can be funded 100% by the funding. | |
| minInkind | Mindesthöhe der zu erbringenden Eigenleistungen seitens der Forschungsstätte. | The min. amount of in-kind contributions expected from the research institution. | |
| inkindDetails | Detailierte Beschreibung der zu erbringenden Eigenleistungen. | More detailed description of the in-kind contributions to be made. | |
| maxOverHeads | Max. Anteil des Gemeinkostenzuschlags, der vom Fördergeber übernommen wird. | The maximum percentage of overhead costs covered by the funding. | |
| overheadsDetails | Beschreibung worauf sich die Berechnung der Gemeinkosten bezieht (Gesamtkosten, Personalkosten, ...) | Description of how the overhad costs are calculated (total costs, personnel costs, ...) | |
| minProjectDuration | Minimale Dauer des beantragten Vorhabens. | The minimum duration of the project. | |
| maxProjectDuration | Maximale Dauer des beantragten Vorhabens. | The maximum duration of the project. | |
| reportingPeriod | Häufigkeit der Berichtslegung (z.B. jährlich nach Projektende). | Frequency of the reporting (e.g. annually and after completion of the project). | |
| number (callStages) | Zählung der Callstufen bei mehrstufigen Antragsverfahren. | Count of call stages in multi-stage application procedures. | |
| callStageStart (callStages) | Das Startdatum der Call-Stufe. | The start date of a call stage. | |
| callStageEnd (callStages) | Datum und Zeitpunkt ab dem keine Projekte mehr in der definierten Call-Stufe eingereicht werden können. | The end date of a call stage. | |
| callStageDescription (callStages) | A description of a call stage. | Beschreibung der Call-Stufe. | |
| name (contact) | Name der verantwortlichen Kontaktperson eines Calls. | Name of the contact person responsible for a call. | |
| email (contact) | E-Mail Adresse der verantwortlichen Kontaktperson eines Calls oder allgemeine E-Mail Adresse des Fördergebers. | E-mail address of the responsible contact person of a call or general e-mail address of the funding organisation. | |
| phone (contact) | Allgemeine Telefonnumer des Fördergebers. | Funder's general phone number. | |
| submissionMode | Der Modus über welchen die Antragsinformationen an den Fördergeber übermittelt werden. | The mode in which an application for a funding can be submitted. | Submission Mode |
| applicationLanguage | Die Sprache in der die Antragsunterlagen verfasst sein müssen. | The language of the application required for the submission of applications. | |
| address | Adresse des Fördergebers | The address of the funder |