So verwenden Sie Azure AD für den Zugriff auf die Intune-APIs in Microsoft Graph
Das Microsoft Graph-API unterstützt jetzt Microsoft Intune mit bestimmten APIs und Berechtigungsrollen. Die Microsoft Graph-API verwendet für die Authentifizierung und Zugriffsteuerung Azure Active Directory (Azure AD).
Für den Zugriff auf die Intune-APIs in Microsoft Graph ist Folgendes erforderlich:
Eine Anwendungs-ID mit:
- Der Berechtigung, Azure AD und die Microsoft Graph-APIs aufzurufen.
- Berechtigungsbereichen, die für bestimmte Anwendungsaufgaben relevant sind
Benutzeranmeldeinformationen mit:
- Zugriffsberechtigung für den Azure AD-Mandanten, der der Anwendung zugeordnet ist
- Rollenberechtigungen zur Unterstützung der Anwendungsberechtigungsbereiche
Der Endbenutzer muss der App die Berechtigung erteilen, Anwendungen für ihren Azure-Mandanten auszuführen.
Inhalt dieses Artikels:
Zeigt, wie Sie eine Anwendung mit Zugriff auf die Microsoft Graph-API und relevante Berechtigungsrollen registrieren.
Beschreibt die Intune API-Berechtigungsrollen.
Enthält Intune API-Authentifizierungsbeispiele für C# und PowerShell.
Beschreibt, wie mehrere Mandanten unterstützt werden.
Weitere Informationen finden Sie unter:
- Autorisieren des Zugriffs auf Webanwendungen mit OAuth 2.0 und Azure Active Directory
- Erste Schritte mit Azure AD Authentifizierung
- Integrieren von Anwendungen in Azure Active Directory
- Grundlegendes zu OAuth 2.0
Registrieren von Apps, um die Microsoft Graph-API zu verwenden
So registrieren Sie eine App, um die Microsoft Graph-API zu verwenden:
Melden Sie sich im Microsoft Endpoint Manager Admin Center mit Ihren Administratoranmeldeinformationen an.
Dazu können Sie Folgendes verwenden:
- Die Administratorkonto des Mandanten
- Ein Mandantenbenutzerkonto mit aktivierter Anwendungseinstellung "Benutzer" kann registriert werden.
Wählen Sie "Alle DiensteM365 > Azure Active Directory > Azure Active Directory App-Registrierungen > aus.
Klicken Sie entweder auf Neue Registrierung, um eine neue Anwendung zu erstellen, oder wählen Sie eine vorhandene Anwendung aus. (Wenn Sie eine vorhandene Anwendung auswählen, überspringen Sie den nächsten Schritt.)
Geben Sie im Bereich "Anwendung registrieren " Folgendes an:
Ein Name für die Anwendung (wird angezeigt, wenn sich Benutzer anmelden).
Der Unterstützte Kontotyp.
Ein Umleitungs-URI-Wert . Dieser Wert ist eine Option.
Hinweis
Azure Active Directory (Azure AD) Authentifizierungsbibliothek (ADAL) und Azure AD Graph-API werden nicht mehr unterstützt. Weitere Informationen finden Sie unter Aktualisieren Ihrer Anwendungen für die Verwendung der Microsoft-Authentifizierungsbibliothek (MSAL) und der Microsoft Graph-API.
Weitere Informationen finden Sie unter Authentifizierungsszenarien für Azure AD.
Im Anwendungsbereich:
Beachten Sie den Wert der Anwendungs-ID (Client).
Wählen Sie API-Berechtigungen aus.
Wählen Sie im BEREICH "API-Berechtigungen" die Option "Berechtigung > hinzufügenMicrosoft-APIsMicrosoft-Graph > " aus. Wählen Sie dann den Typ der Berechtigungen aus, die Ihre Anwendung benötigt.
Wählen Sie die für Ihre App erforderlichen Rollen aus, indem Sie links neben den relevanten Namen ein Häkchen setzen. Informationen zu bestimmten Intune Berechtigungsbereichen finden Sie unter Intune Berechtigungsbereiche. Weitere Informationen zu anderen Graph-API Berechtigungsbereichen finden Sie unter Microsoft Graph Berechtigungsreferenz.
Wählen Sie für optimale Ergebnisse nur so viele Rollen, wie für die Implementierung Ihrer Anwendung erforderlich sind.
Data Warehouse- und Berichtsberechtigungen
Wenn Sie eine Anwendung über das Azure Active Directory Admin Center hinzufügen, können Sie die Intune-API-Berechtigungen basierend auf den Anforderungen Ihrer Anwendung auswählen.
- get_data_warehouse – Verwenden Sie diese API-Berechtigung, um den Zugriff auf die Intune Data Warehouse-API von Microsoft Intune aus zu gewähren. Weitere Informationen finden Sie unter Verwenden der Microsoft Intune Data Warehouse.
Partnerlösungs-APIs
Die folgenden Intune API-Berechtigungen sind beim Hinzufügen einer Anwendung über das Azure Active Directory Admin Center verfügbar:
- get_device_compliance – Diese API-Berechtigung wird verwendet, um Gerätestatus- und Complianceinformationen von Microsoft Intune abzurufen. Diese API-Berechtigung wird von Netzwerk-Access Control-Partnern verwendet. Weitere Informationen finden Sie unter Network Access Control integration with Intune.
- manage_partner_compliance_policy – Diese API-Berechtigung wird verwendet, um Compliancerichtlinien für Partner mit Microsoft Intune zu verwalten. Diese API-Berechtigung ermöglicht es der App, Partnercompliancerichtlinien und ihre Azure AD Gruppenzuweisung an Microsoft Intune zu senden, ohne dass ein Benutzer angemeldet ist. Es wird von Gerätecompliancepartnern verwendet. Weitere Informationen finden Sie unter Drittanbieter-Gerätecompliancepartner.
- pfx_cert_provider – Diese API-Berechtigung wird verwendet, um PFX-Zertifikate an Intune für einen bestimmten Benutzer zu senden. Intune übergibt das Zertifikat an alle vom Benutzer registrierten Geräte. Weitere Informationen finden Sie unter PFX Import Powershell.
- scep_challenge_provider – Diese API-Berechtigung wird verwendet, um SCEP-Herausforderungen zur Überprüfung von Zertifikatanforderungen an Intune zu senden. Es wird von Partnern der Zertifizierungsstelle verwendet. Weitere Informationen finden Sie unter Partner Certification Authority.
- send_data_usage – Diese API-Berechtigung wird verwendet, um Richtlinienänderungen für Geräte basierend auf Schwellenwerten für die Verwaltung von Telekommunikationsausgaben auszulösen. Es wird für Telekommunikationsausgaben-Partnerintegrationen verwendet. Weitere Informationen finden Sie unter Telecom Expense Management in Intune.
- update_device_attributes – Diese API-Berechtigung wird verwendet, um Geräteinformationen an Intune von Gerätecompliance- und Mobilen Bedrohungsschutzpartnern zu senden. Weitere Informationen finden Sie unter Mobile Threat Defense-Integration mit Intune- und Drittanbieter-Gerätecompliancepartnern.
- update_device_health – Diese API-Berechtigung wird verwendet, um Informationen zum Geräteintegritäts- und Bedrohungsstatus an Intune mobiler Bedrohungsschutzpartner zu senden. Weitere Informationen finden Sie unter Integration von Mobile Threat Defense in Intune.
Wenn Sie ein Partner sind, der an der Integration mit Intune mithilfe dieser API-Berechtigungen interessiert ist, wenden Sie sich an das Microsoft Intelligent Security Association]-Team, um Informationen zu erhalten.
Wenn Sie fertig sind, wählen Sie "Berechtigungen hinzufügen" aus, um Ihre Änderungen zu speichern.
An diesem Punkt können Sie auch:
Wählen Sie aus, dass sie allen Mandantenkonten die Berechtigung erteilen möchten, die App zu verwenden, ohne Anmeldeinformationen bereitzustellen.
Sie können zu diesem Zweck Berechtigungen erteilen und die Bestätigungsaufforderung akzeptieren.
Wenn Sie die Anwendung zum ersten Mal ausführen, werden Sie aufgefordert, der App die Berechtigung zum Ausführen der ausgewählten Rollen zu erteilen.
Stellen Sie die App für Benutzer außerhalb Ihres Mandanten zur Verfügung. (Dies ist in der Regel nur für Partner erforderlich, die mehrere Mandanten/Organisationen unterstützen.)
Gehen Sie hierzu folgendermaßen vor:
Wählen Sie im Anwendungsbereich " Manifest " aus.
Ändern Sie den Wert der
availableToOtherTenantsEinstellung intrue.Speichern Sie Ihre Änderungen.
Intune Berechtigungsbereiche
Azure AD und Microsoft Graph Berechtigungsbereiche verwenden, um den Zugriff auf Unternehmensressourcen zu steuern.
Berechtigungsbereiche (auch als OAuth-Bereiche bezeichnet) steuern den Zugriff auf bestimmte Intune Entitäten und deren Eigenschaften. In diesem Abschnitt werden die Berechtigungsbereiche für Intune API-Features zusammengefasst.
So erhalten Sie weitere Informationen:
Wenn Sie Microsoft Graph die Berechtigung erteilen, können Sie die folgenden Bereiche angeben, um den Zugriff auf Intune Features zu steuern: In der folgenden Tabelle sind die Intune API-Berechtigungsbereiche zusammengefasst. In der ersten Spalte wird der Name des Features wie im Microsoft Endpoint Manager Admin Center angezeigt, und die zweite Spalte enthält den Berechtigungsbereichsnamen.
| Aktivieren der Access-Einstellung | Bereichsname |
|---|---|
| Remoteaktionen mit Auswirkungen auf den Benutzer auf Microsoft Intune-Geräten durchführen | DeviceManagementManagedDevices.PrivilegedOperations.All |
| Microsoft Intune-Geräte lesen und schreiben | DeviceManagementManagedDevices.ReadWrite.All |
| Microsoft Intune-Geräte lesen | DeviceManagementManagedDevices.Read.All |
| Microsoft Intune-RBAC-Einstellungen lesen und schreiben | DeviceManagementRBAC.ReadWrite.All |
| Microsoft Intune-RBAC-Einstellungen lesen | DeviceManagementRBAC.Read.All |
| Microsoft Intune-Apps lesen und schreiben | DeviceManagementApps.ReadWrite.All |
| Microsoft Intune-Apps lesen | DeviceManagementApps.Read.All |
| Lesen und Schreiben Microsoft Intune Gerätekonfiguration und -richtlinien | DeviceManagementConfiguration.ReadWrite.All |
| Lesen Microsoft Intune Gerätekonfiguration und -richtlinien | DeviceManagementConfiguration.Read.All |
| Microsoft Intune-Konfiguration lesen und schreiben | DeviceManagementServiceConfig.ReadWrite.All |
| Microsoft Intune-Konfiguration lesen | DeviceManagementServiceConfig.Read.All |
In der Tabelle sind die Einstellungen aufgeführt, wie sie im Microsoft Endpoint Manager Admin Center angezeigt werden. In den folgenden Abschnitten werden die Bereiche in alphabetischer Reihenfolge beschrieben.
Derzeit benötigen alle Intune Berechtigungsbereiche Administratorzugriff. Dies bedeutet, dass Sie beim Ausführen von Apps oder Skripts, die auf Intune API-Ressourcen zugreifen, entsprechende Anmeldeinformationen benötigen.
DeviceManagementApps.Read.All
Aktivieren der Zugriffseinstellung: Lesen Microsoft Intune Apps
Ermöglicht lesezugriff auf die folgenden Entitätseigenschaften und den folgenden Status:
- Client-Apps
- Kategorien mobiler Apps
- App-Schutzrichtlinien
- App-Konfigurationen
DeviceManagementApps.ReadWrite.All
Aktivieren der Access-Einstellung: Lesen und Schreiben Microsoft Intune Apps
Ermöglicht dieselben Vorgänge wie DeviceManagementApps.Read.All
Lässt auch Änderungen an den folgenden Entitäten zu:
- Client-Apps
- Kategorien mobiler Apps
- App-Schutzrichtlinien
- App-Konfigurationen
DeviceManagementConfiguration.Read.All
Aktivieren der Zugriffseinstellung: Lesen Microsoft Intune Gerätekonfiguration und -richtlinien
Ermöglicht lesezugriff auf die folgenden Entitätseigenschaften und den folgenden Status:
- Gerätekonfiguration
- Gerätekompatibilitätsrichtlinie
- Benachrichtigungsmeldungen
DeviceManagementConfiguration.ReadWrite.All
Aktivieren der Zugriffseinstellung: Lesen und Schreiben Microsoft Intune Gerätekonfiguration und -richtlinien
Ermöglicht die gleichen Vorgänge wie DeviceManagementConfiguration.Read.All
Apps können auch die folgenden Entitäten erstellen, zuweisen, löschen und ändern:
- Gerätekonfiguration
- Gerätekompatibilitätsrichtlinie
- Benachrichtigungsmeldungen
DeviceManagementManagedDevices.PrivilegedOperations.All
Aktivieren der Zugriffseinstellung: Ausführen von benutzerwirksamen Remoteaktionen auf Microsoft Intune Geräten
Lässt die folgenden Remoteaktionen auf einem verwalteten Gerät zu:
- Zurückziehen
- Wischen
- Kennung zurücksetzen/wiederherstellen
- Remotesperre
- Aktivieren/Deaktivieren des verlorenen Modus
- Sauberer PC
- Neustart
- Benutzer vom freigegebenen Gerät löschen
DeviceManagementManagedDevices.Read.All
Aktivieren der Access-Einstellung: Lesen Microsoft Intune Geräten
Ermöglicht lesezugriff auf die folgenden Entitätseigenschaften und den folgenden Status:
- Verwaltetes Gerät
- Gerätekategorie
- Erkannte App
- Remoteaktionen
- Schadsoftwareinformationen
DeviceManagementManagedDevices.ReadWrite.All
Aktivieren der Access-Einstellung: Lesen und Schreiben Microsoft Intune Geräten
Ermöglicht die gleichen Vorgänge wie DeviceManagementManagedDevices.Read.All
Apps können auch die folgenden Entitäten erstellen, löschen und ändern:
- Verwaltetes Gerät
- Gerätekategorie
Die folgenden Remoteaktionen sind ebenfalls zulässig:
- Geräte suchen
- Deaktivieren der Aktivierungssperre
- Remoteunterstützung anfordern
DeviceManagementRBAC.Read.All
Aktivieren der Zugriffseinstellung: Lesen Microsoft Intune RBAC-Einstellungen
Ermöglicht lesezugriff auf die folgenden Entitätseigenschaften und den folgenden Status:
- Rollenzuweisungen
- Rollendefinitionen
- Ressourcenvorgänge
DeviceManagementRBAC.ReadWrite.All
Access-Einstellung aktivieren: Lese- und Schreibzugriff Microsoft Intune RBAC-Einstellungen
Ermöglicht die gleichen Vorgänge wie DeviceManagementRBAC.Read.All
Apps können auch die folgenden Entitäten erstellen, zuweisen, löschen und ändern:
- Rollenzuweisungen
- Rollendefinitionen
DeviceManagementServiceConfig.Read.All
Aktivieren der Access-Einstellung: Microsoft Intune-Konfiguration lesen
Ermöglicht lesezugriff auf die folgenden Entitätseigenschaften und den folgenden Status:
- Geräteregistrierung
- Apple Push Notification Certificate
- Apple Device Enrollment Program
- Apple Volume Purchase Program
- Exchange Connector
- Bedingungen
- Telecoms Expense Management
- Cloud-PKI
- Branding
- Mobile Threat Defense
DeviceManagementServiceConfig.ReadWrite.All
Access-Einstellung aktivieren: Microsoft Intune-Konfiguration lesen und schreiben
Ermöglicht dieselben Vorgänge wie DeviceManagementServiceConfig.Read.All_
Apps können auch die folgenden Intune Features konfigurieren:
- Geräteregistrierung
- Apple Push Notification Certificate
- Apple Device Enrollment Program
- Apple Volume Purchase Program
- Exchange Connector
- Bedingungen
- Telecoms Expense Management
- Cloud-PKI
- Branding
- Mobile Threat Defense
beispiele für Azure AD-Authentifizierung
In diesem Abschnitt wird gezeigt, wie Sie Azure AD in Ihre C#- und PowerShell-Projekte integrieren.
In jedem Beispiel müssen Sie eine Anwendungs-ID angeben, die mindestens den DeviceManagementManagedDevices.Read.All Berechtigungsbereich aufweist (weiter oben erläutert).
Beim Testen beider Beispiele erhalten Sie möglicherweise FEHLER des HTTP-Status 403 (Verboten) ähnlich wie die folgenden:
{
"error": {
"code": "Forbidden",
"message": "Application is not authorized to perform this operation - Operation ID " +
"(for customer support): 00000000-0000-0000-0000-000000000000 - " +
"Activity ID: cc7fa3b3-bb25-420b-bfb2-1498e598ba43 - " +
"Url: https://example.manage.microsoft.com/" +
"Service/Resource/RESTendpoint?" +
"api-version=2017-03-06 - CustomApiErrorPhrase: ",
"innerError": {
"request-id": "00000000-0000-0000-0000-000000000000",
"date": "1980-01-0112:00:00"
}
}
}
Überprüfen Sie in diesem Fall Folgendes:
Sie haben die Anwendungs-ID auf einen Autor für die Verwendung der Microsoft Graph-API und des
DeviceManagementManagedDevices.Read.AllBerechtigungsbereichs aktualisiert.Ihre Mandantenanmeldeinformationen unterstützen Administrative Funktionen.
Ihr Code ähnelt den angezeigten Beispielen.
Authentifizieren Azure AD in C#
In diesem Beispiel wird gezeigt, wie Sie mit C# eine Liste der Geräte abrufen, die Ihrem Intune-Konto zugeordnet sind.
Hinweis
Azure Active Directory (Azure AD) Authentifizierungsbibliothek (ADAL) und Azure AD Graph-API werden nicht mehr unterstützt. Weitere Informationen finden Sie unter Aktualisieren Ihrer Anwendungen für die Verwendung der Microsoft-Authentifizierungsbibliothek (MSAL) und der Microsoft Graph-API.
Starten Sie Visual Studio, und erstellen Sie dann ein neues Visual C#-Konsolen-App-Projekt (.NET Framework).
Geben Sie einen Namen für Ihr Projekt ein, und geben Sie nach Bedarf weitere Details an.
Verwenden Sie die Projektmappen-Explorer, um dem Projekt das Microsoft MSAL NuGet-Paket hinzuzufügen:
- Klicken Sie mit der rechten Maustaste auf die Projektmappen-Explorer.
- Wählen Sie "NuGet Pakete verwalten" aus... >Durchsuchen.
- Wählen Sie "Installieren" aus
Microsoft.IdentityModel.Clients.ActiveDirectory, und wählen Sie dann "Installieren" aus.
Fügen Sie die folgenden Anweisungen am Anfang von "Program.cs" hinzu:
using Microsoft.IdentityModel.Clients.ActiveDirectory; using System.Net.Http;Fügen Sie eine Methode zum Erstellen des Autorisierungsheaders hinzu:
private static async Task<string> GetAuthorizationHeader() { string applicationId = "<Your Application ID>"; string authority = "https://login.microsoftonline.com/common/"; Uri redirectUri = new Uri("urn:ietf:wg:oauth:2.0:oob"); AuthenticationContext context = new AuthenticationContext(authority); AuthenticationResult result = await context.AcquireTokenAsync( "https://graph.microsoft.com", applicationId, redirectUri, new PlatformParameters(PromptBehavior.Auto)); return result.CreateAuthorizationHeader();Denken Sie daran, den Wert
application_IDso zu ändern, dass er mindestens einemDeviceManagementManagedDevices.Read.AllBerechtigungsbereich entspricht, wie weiter oben beschrieben.Fügen Sie eine Methode zum Abrufen der Liste der Geräte hinzu:
private static async Task<string> GetMyManagedDevices() { string authHeader = await GetAuthorizationHeader(); HttpClient graphClient = new HttpClient(); graphClient.DefaultRequestHeaders.Add("Authorization", authHeader); return await graphClient.GetStringAsync( "https://graph.microsoft.com/beta/me/managedDevices"); }Update Main to call GetMyManagedDevices:
string devices = GetMyManagedDevices().GetAwaiter().GetResult(); Console.WriteLine(devices);Kompilieren Und Führen Sie Ihr Programm aus.
Wenn Sie Das Programm zum ersten Mal ausführen, sollten Sie zwei Eingabeaufforderungen erhalten. Der erste fordert Ihre Anmeldeinformationen an, und der zweite erteilt Berechtigungen für die managedDevices Anforderung.
Als Referenz finden Sie hier das fertige Programm:
using Microsoft.IdentityModel.Clients.ActiveDirectory;
using System;
using System.Net.Http;
using System.Threading.Tasks;
namespace IntuneGraphExample
{
class Program
{
static void Main(string[] args)
{
string devices = GetMyManagedDevices().GetAwaiter().GetResult();
Console.WriteLine(devices);
}
private static async Task<string> GetAuthorizationHeader()
{
string applicationId = "<Your Application ID>";
string authority = "https://login.microsoftonline.com/common/";
Uri redirectUri = new Uri("urn:ietf:wg:oauth:2.0:oob");
AuthenticationContext context = new AuthenticationContext(authority);
AuthenticationResult result = await context.AcquireTokenAsync("https://graph.microsoft.com", applicationId, redirectUri, new PlatformParameters(PromptBehavior.Auto));
return result.CreateAuthorizationHeader();
}
private static async Task<string> GetMyManagedDevices()
{
string authHeader = await GetAuthorizationHeader();
HttpClient graphClient = new HttpClient();
graphClient.DefaultRequestHeaders.Add("Authorization", authHeader);
return await graphClient.GetStringAsync("https://graph.microsoft.com/beta/me/managedDevices");
}
}
}
Authentifizieren Azure AD (PowerShell)
PowerShell-Skripts können das AzureAD PowerShell-Modul für die Authentifizierung verwenden. Weitere Informationen finden Sie unter Azure Active Directory PowerShell Version 2 und den Intune PowerShell-Beispielen.
Unterstützen mehrerer Mandanten und Partner
Wenn Ihre Organisation Organisationen mit eigenen Azure AD Mandanten unterstützt, sollten Sie Ihren Clients die Verwendung Ihrer Anwendung mit ihren jeweiligen Mandanten gestatten.
Gehen Sie hierzu folgendermaßen vor:
Stellen Sie sicher, dass das Clientkonto im Ziel-Azure AD-Mandanten vorhanden ist.
Stellen Sie sicher, dass Ihr Mandantenkonto Benutzern die Registrierung von Anwendungen ermöglicht (siehe Benutzereinstellungen).
Richten Sie eine Beziehung zwischen jedem Mandanten ein.
Gehen Sie dazu wie folgt vor:
a. Verwenden Sie das Microsoft Partner Center , um eine Beziehung mit Ihrem Client und deren E-Mail-Adresse zu definieren.
b. Laden Sie den Benutzer ein, Gast Ihres Mandanten zu werden.
So laden Sie den Benutzer ein, Gast Ihres Mandanten zu sein:
Wählen Sie im Bereich "Schnelle Aufgaben" die Option "Gastbenutzer hinzufügen" aus.
Geben Sie die E-Mail-Adresse des Clients ein, und fügen Sie (optional) eine personalisierte Nachricht für die Einladung hinzu.
Wählen Sie "Einladen" aus.
Dadurch wird eine Einladung an den Benutzer gesendet.
Der Benutzer muss den Link Erste Schritte auswählen, um Ihre Einladung anzunehmen.
Wenn die Beziehung eingerichtet ist (oder Ihre Einladung angenommen wurde), fügen Sie das Benutzerkonto der Verzeichnisrolle hinzu.
Denken Sie daran, den Benutzer bei Bedarf anderen Rollen hinzuzufügen. Damit der Benutzer beispielsweise Intune Einstellungen verwalten kann, muss er entweder ein globaler Administrator oder ein Intune-Dienstadministrator sein.
Ferner gilt Folgendes:
Hiermit weisen Sie https://admin.microsoft.com Ihrem Benutzerkonto eine Intune Lizenz zu.
Aktualisieren Sie den Anwendungscode, um sich bei der Azure AD Mandantendomäne des Clients zu authentifizieren und nicht bei Ihrer eigenen.
Angenommen, Ihre Mandantendomäne ist
contosopartner.onmicrosoft.comund die Mandantendomäne Ihres Clients istnorthwind.onmicrosoft.com, sie würden Ihren Code aktualisieren, um sich beim Mandanten Ihres Clients zu authentifizieren.Um dies in einer C#-Anwendung basierend auf dem vorherigen Beispiel zu tun, würden Sie den Wert der
authorityVariablen ändern:string authority = "https://login.microsoftonline.com/common/";in
string authority = "https://login.microsoftonline.com/northwind.onmicrosoft.com/";