2.1 Authentifizierung
Im folgenden Abschnitt finden Sie die Authentifizierung zu unserer API mittels eines JavaScript-Beispiels.
Wenn Sie auf den folgenden Link klicken, gelangen Sie zu dem Abschnitt, der beschreibt, wie Sie Anwendungen und Dienste mit OpenID Connect sichern können, indem Sie entweder Keycloak-Adapter oder generische OpenID Connect Relying Party-Bibliotheken verwenden: Leitfaden zur Absicherung von Anwendungen und Diensten.
Authentifizierung mit JavaScript/TypeScript
Singleton Keycloak
// global scope || only called once
const keycloak = Keycloak('/keycloak.json');
// const keycloak = Keycloak('https://int.audioxchange.de/keycloak.json');
Bei jeder Aktualisierung ausführen
// if we have only x secount we want to refresh everything
const KEYCLOAK_TOKEN_MIN_VALIDITY = 20;
function initKeycloak (setIsLogin) {
if (!keycloak.authenticated) {
keycloak.init({onLoad: 'login-required'}).then((authenicated: boolean) => {
if (authenicated) {
// react setState callback, to trigger the life cylce hooks
setIsLogin(authenicated);
}
});
keycloak.onTokenExpired = () => {
console.log('token expired', keycloak.token);
keycloak
.updateToken(KEYCLOAK_TOKEN_MIN_VALIDITY)
.success(() => {
console.log('successfully get a new token', keycloak.token);
})
.error(() => {});
};
} else if (keycloak.isTokenExpired(KEYCLOAK_TOKEN_MIN_VALIDITY)) {
keycloak.updateToken(KEYCLOAK_TOKEN_MIN_VALIDITY);
} else {
console.log('callbackEffectKeycloakInit nothing to do');
}
}
Nutzerdaten laden
// temp helper to load user data from Keycloak direkt
// long term we want use /api/vX.XX/Account/GetCurrentAccount
const loadKeycloakData = async (keycloak: KeycloakInstance) => {
// getCurrentAccount({headers: {Authorization: `Bearer: ${keycloak.token}`}}).then(Account => {
const info = await keycloak.loadUserInfo();
const profile = await keycloak.loadUserProfile();
return Promise.all([info, profile]);
};
// setUser and setIsLoading are both react setState Callback, same as setIsLogin
function loadUserData (setUser, setIsLoading) {
loadKeycloakData(keycloak).then(([userInfo, userProfile]: [{}, KeycloakProfile]) => {
console.log('useAuth loadData', userInfo, userProfile);
const userObject = {
Id: userProfile.id,
Username: userProfile.username,
RmEvalFunctions: ['OrganizationRead'],
};
setUser(userObject);
setIsLoading(false);
});
}
Aufrufen von API-Methoden
const apiPrefixHoliday = 'https://int-api.audioxchange.de/api/holidays';
export async function getHolidaysCountries(): Promise<ICountry[]> {
const response = await http.get<ICountry[]>(${apiPrefixHoliday}/countries, {
headers: {Authorization: Bearer ${keycloak.token}},
});
return response?.data;
}
export async function getHolidaysStatesForCountry(
countryUuid: string
): Promise<IState[]> {
const response = await http.get<IState[]>(
${apiPrefixHoliday}/countries/${countryUuid}/states,
{
headers: {Authorization: Bearer ${keycloak.token}},
},
);
return response?.data;
}
Wenn Sie die entsprechenden API-Aufrufe sehen möchten, klicken Sie auf eines der folgenden Beispiele:
Authentifizierung in Postman
Ihr Access Token berechtigt Sie zur Nutzung unseres audioXchange-Servers. Wie man ein Token in der Postman-App für einen einzelnen oder mehrere Benutzer erhält, wird in den folgenden Abschnitten erklärt. Beginnen wir mit der Anleitung für einen einzelnen Benutzer.
Für einzelne Benutzer
- Laden Sie Postman herunter oder öffnen Sie Postman in Ihrem Browser.
- Erstellen Sie in Postman eine neue Collection.
- Wählen Sie im Tab Authorization unter Type die Option OAuth 2.0 aus.
- Geben Sie https://int.audioxchange.de in das Feld Callback URL ein.
- In das Feld Auth URL geben Sie die folgende URL ein:
https://int-iam.audioxchange.de/auth/realms/axc/protocol/openid-connect/auth
in das Feld Access Token URL geben Sie die folgende URL ein:https://int-iam.audioxchange.de/auth/realms/axc/protocol/openid-connect/token
- In das Feld Client ID geben Sie die
keykloak_id
ein, in diesem Fallaxc-public
. Danach sollte Ihr Tab Authorization wie folgt aussehen:
Klicken Sie nun auf Get New Access Token und melden Sie sich mit Ihren Anmeldedaten auf unserem Server an. Nachdem Sie erfolgreich als autorisierter Benutzer verifiziert worden sind, wird Ihr Access Token generiert und gespeichert. Sie können dann Anfragen senden. Es muss sichergestellt sein, dass wir uns in der soeben erstellten Collection befinden. Außerdem muss auf der jeweilige Request im Tab Authorization unter Type -> Inherit auth from parent ausgewählt sein.
Authentifizierung über andere Programme
In einigen Fällen müssen noch weitere Einstellungen zusätzlich zu denen für Postman vorgenommen werden. Diese können sein:
- Grant Type: Authorization Code
-
keykloak_id
heißt manchmal auchclient id
- redirect Id:
https://int-api-audioxchange.de
In Java kann zum Beispiel die Maven-Dependency keycloak-authz-client genutzt werden, um die Anbindung zu erreichen.
Authentifizierungsfehler
In der Regel können die meisten Probleme gelöst werden, indem sichergestellt wird, dass ein Access Token vorhanden und nicht abgelaufen ist.
audioXchange folgt dem Industriestandard OAuth 2.0 authorization protocol und gibt bei Authorisierungsfehlern den HTTP-Statuscode 400
zurück.