Ich habe eine Webanwendung, die ihre Daten in einer Azure SQL-Datenbank speichert und Daten über authentifizierte Benutzer in Azure Active Directory B2C. Daten in der SQL-Datenbank beziehen sich auf AD-Benutzer über ihre "oid" (GUID). Dies bedeutet, dass durch das Abrufen der Datenbank niemand bestimmte Benutzer identifizieren kann.Wie kann ich am besten Benutzerdaten aus Active Directory in Verbindung mit SQL Server-Daten abrufen?
Wenn ich jedoch die SQL-Daten abfrage, um einem Besucher eine Tabelle oder ein Diagramm zu erstellen, möchte ich die Daten natürlich in Beziehung zu dem Benutzer anzeigen, der die Daten besitzt (dh den vollständigen Namen des Benutzers anzeigen, nicht die oid!) .
Ich weiß, dass ich die Azure Graph API verwenden kann, um Benutzerdaten zu erhalten, wenn die Ergebnisse der SQL-Abfrage auf einer Webseite gerendert werden, aber dies scheint eine sehr ineffiziente Art und Weise zu tun. Hinzu kommt, dass ich nicht sicher bin, wie ich einen Stapel von OIDs übergeben würde, um alle Benutzerobjekte zurück zu bekommen, ohne einen lächerlich langen Abfrage-String-Filter zu verwenden!
Ich könnte eine Art von Synchronisierungsprozess erstellen, der die gesamte AD) abfragt und eine SQL-Tabelle in einem zeitgesteuerten Prozess (vielleicht eine Azure-Funktion) aktualisiert, aber das scheint auch schrecklich ineffizient?
Ich schaute auf Microsoft Graph API-Webhooks, aber im Moment scheint es keine Subskription zu geben, die ich in Bezug auf Benutzerobjektänderungen aufnehmen kann und sie empfehlen Graph mit B2C nicht.
Die andere Option, die ich denke, wäre, irgendwo einen Cache zu haben, der die Daten für schnelleres Nachschlagen speichert, aber dieses würde aktualisiert werden müssen.
Alle Vorschläge dankbar geschätzt.
Vielen Dank für Ihren Vorschlag Pytry - Ich habe Code bereits, die die API pro Zeile nennen kann die authentifizierte GET Anfrage mit jedem oid verwenden. Mein Punkt ist, dass ich dies einmal pro Zeile in der resultierenden Ausgabe auf der Webseite tun müsste. Das fühlt sich furchtbar ineffizient an, also suchte ich nach Möglichkeiten, dies zu mildern - auf irgendeine Weise, einen Haufen Oids auf einmal zu vertreiben? – RNDThoughts
Das endete so, wie ich es gemacht habe, aber ich fühle mich nicht ganz richtig. – RNDThoughts
Es tut uns leid, dass wir nicht bald wieder bei Ihnen waren (war beschäftigt). Sie können auch eine Abfrage hinzufügen, um mehrere Benutzer gleichzeitig abzurufen, und dann zusätzliche Filter/Validierung ausführen, um sie mit Daten von SQL Server abzugleichen. Um die Schwere dieser Art von Operation geht es nicht; Wenn Sie einen schnellen Zugriff auf die Ergebnisse benötigen, dann sollten Sie sich mit Caching beschäftigen. Gimme ein bisschen (hoffentlich heute), um meine Antwort zu aktualisieren, um mehrere Ergebnisabfragen einzuschließen. – Pytry