Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Verwenden von AWS Lambda Lambda-Autorisierern

Der Authentifizierungsablauf besteht aus den folgenden Schritten:
HTTP-Anfrage mit Bearer-Token an den Endpunkt DICOMweb
AWS HealthImaging überprüft den Ablauf des Tokens
Anfrage an Lambda-Autorisierer weiterleiten
Lambda validiert Token mit Identity Provider (IdP)
Lambda gibt die IAM-Rolle zurück
Die Bewertung der Richtlinie und die Benutzerauthentifizierung sind abgeschlossen
Voraussetzungen
1. Einrichtung des Lambda Authorizers
Erstellen Sie einen Autorisierer, der akzeptiert und zurücksendet AuthInput AuthResult
Validiert BearerToken (Signatur, Ablauf, Geltungsbereich, Emittent und Geschäftsregeln)
Gibt den IAM-Rollen-ARN mit den erforderlichen DICOMweb Betriebsberechtigungen zurück
Muss in ≤ 1 Sekunde antworten (bereitgestellte Parallelität konfigurieren)
Implementieren Sie die Token-Extraktion:
// in Node.js
export const handler = async (event) => {
try {
const token = event.bearerToken;
const operation = event.operation;
}
}
2. Datenspeicher-Konfiguration
Aktivieren Sie die Funktion, indem Sie sie bei der Erstellung angeben lambdaAuthorizerArn
Anmerkung
Ihrem AWS-Konto werden Lambda-Aufrufe und Dauer in Rechnung gestellt. Weitere Informationen finden Sie unter AWS Lambda – Preise.
Einzelheiten zum Autorisierungsprozess
Regeln für die Token-Validierung
HealthImaging bewertet die folgenden Token-Ansprüche:
exp
— Muss nach der aktuellen Uhrzeit in UTC liegennbf
— Muss vor der aktuellen Uhrzeit in UTC liegeniat
— Muss vor der aktuellen Uhrzeit in UTC liegen und NICHT früher als 12 Stunden davor (maximale Lebensdauer des Tokens)
Ereignis- und Antwortschemas
AHI ruft Ihre Funktion mit der folgenden Eingabe auf und erwartet die folgende Ausgabe.
Eingabe durch den Authorizer
{
"datastoreId": "{datastore id}",
"operation": "{Healthimaging API name e.g. GetDICOMInstance}",
"bearerToken": "{access token}"
}
Authorizer-Ausgabe
{
"isTokenValid": {true or false},
"roleArn": "{role arn or empty string meaning to deny the request explicitly}"
}
Bearbeitung der Anfrage
Bearbeitung der ersten Anfrage:
Falls keine Autorisierung: Bearer-Header → Anfrage wird zur SigV4-Authentifizierung weitergeleitet
Wenn das Bearer-Token vorhanden ist:
Löst Datenspeicher auf LambdaAuthorizerArn
Ruft den Authorizer mithilfe von Forward Access Sessions (FAS) auf
Lambda-Autorisierungsprozess:
Empfängt AuthInput mit DataStoreID, Operation und BearerToken
Die Validierung muss innerhalb von 1 Sekunde abgeschlossen sein
Rücksendungen AuthResult mit Validierungsstatus und Rollen-ARN
Ablauf der Implementierung
Clientseitiger Authentifizierungsablauf
Benutzerauthentifizierung: Leitet den Benutzer zum Autorisierungsendpunkt des IdP weiter
Token-Akquisition: Tauschen Sie den Autorisierungscode für ID- und Zugriffstoken (JWT) aus
API-Aufruf: Fügen Sie das Zugriffstoken in den HTTP Authorization Bearer-Header ein
Token-Validierung: Vollständiger Validierungsprozess durch HealthImaging einen Lambda-Autorisierer
Schritte zur Einrichtung
Implementierung von Lambda Authorizer
Schnittstelle implementieren AuthInput/AuthResult
Bestätigen Sie das Token (Signatur, Ablauf, Emittent, Zielgruppe, Geltungsbereich)
Rückgabeentscheidung und IAM-Rolle ARN
IAM-Konfiguration
Erstellen Sie eine Richtlinie mit minimalen DICOMweb Betriebsberechtigungen
Erstellen Sie eine Rolle mit Vertrauensrichtlinie für
medical-imaging.
region
.amazonaws.comLambda-Ausführungsberechtigungen konfigurieren
Fügen Sie eine Ressourcenrichtlinie mit AllowHealthLakeInvocation Anweisung für den Datenspeicher-ARN hinzu
Der Autorisierer sollte über die folgende Erklärung zur Ressourcenrichtlinie verfügen:
{
"Sid": "health-imaging",
"Effect": "Allow",
"Principal": {
"Service": "medical-imaging.region.amazonaws.com"
},
"Action": "lambda:InvokeFunction",
"Resource": "arn:aws:lambda:region
:123456789012:function:LambdaAuthorizerName"
}
Für die IAM-Rolle, die das Auth-Lambda zurückgegeben hat, muss sie über die folgende Vertrauensstellungsrichtlinie verfügen:
{
"Effect": "Allow",
"Principal": {
"Service": "medical-imaging.region
.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
Konfiguration der Parallelität
Richten Sie die bereitgestellte Parallelität für SLO mit ≤ 1 Sekunde ein
Implementieren Sie bei Bedarf Maßnahmen zur Vermeidung von Kaltstarts
Lambda Authorizer-Vorlage
import jwt from 'jsonwebtoken';
import jwksClient from 'jwks-rsa';
const CACHE_TTL = 10 * 60 * 1000;
const client = jwksClient({
jwksUri: '{Jwks Url}',
cache: true,
cacheMaxEntries: 5,
cacheMaxAge: 600000,
rateLimit: true,
jwksRequestsPerMinute: 10
});
export const handler = async (event) => {
try {
console.log(event);
const token = event.bearerToken;
const decoded = jwt.decode(token, { complete: true });
if (!decoded || !decoded.header.kid) {
console.log('Invalid token structure');
return generatePolicy(null, false);
}
const key = await client.getSigningKey(decoded.header.kid);
const signingKey = key.getPublicKey();
const payload = jwt.verify(token, signingKey, {
issuer: '{issuer to be verified}',
algorithms: ['RS256'],
// Additional verification parameters as needed
});
return generatePolicy(payload.sub, true);
} catch (error) {
console.error('Authorization error:', error);
return generatePolicy(null, false);
}
};
function generatePolicy(user, isValid) {
return {
isTokenValid: isValid,
roleArn: user ? `arn:aws:iam::123456789012:role/${user}` : ""
};
}
Endgültige Validierung von HealthImaging
Nach dem Empfang AuthResult HealthImaging:
Überprüft alle Token-Ansprüche (nbf, exp, iat)
Überprüft das ARN-Format der Rolle
Nimmt die Rolle an
Signiert die ursprüngliche Anfrage im Namen des Benutzers mit SigV4
Verarbeitet die Anfrage DICOMweb
Ausnahmen
Bedingung | AHI-Antwort |
---|---|
Lambda Authorizer existiert nicht oder ist ungültig | 424: Fehlkonfiguration des Authorizers |
Der Authorizer wurde aufgrund eines Ausführungsfehlers beendet | 424 Authorizer ist fehlgeschlagen |
Irgendein anderer Authorizer-Fehler, der nicht zugeordnet wurde | 424 Authorizer ist fehlgeschlagen |
Der Autorisierer hat eine ungültige/falsch formulierte Antwort zurückgegeben | 424 Fehlkonfiguration des Authorizers |
Der Authorizer lief mehr als 1 Sekunde | 408 Authorizer-Timeout |
Das Token ist abgelaufen oder anderweitig ungültig | 403 Ungültiges oder abgelaufenes Token |
AHI kann die zurückgegebene IAM-Rolle aufgrund einer Fehlkonfiguration des Autorisierers nicht zusammenführen | 4.2.4 Fehlkonfiguration des Autorisierers |
Der Authorizer hat eine leere Rolle zurückgegeben | 403 Zugriff verweigert |
Die zurückgegebene Rolle ist nicht aufrufbar (Assume-Rolle/Trust-Fehlkonfiguration) | 424 Fehlkonfiguration des Autorisierers |
Die Anforderungsrate überschreitet die Gateway-Grenzen DICOMweb | 429 Zu viele Anfragen |
Regionsübergreifender Datenspeicher, Rückgabefunktion oder Autorisierer Account/Cross | 4.2.4 Regionsübergreifender Zugriff durch den Autorisierer Account/Cross |