Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Om veiligheidsredenen kan uw server worden gehost in een tenant die onafhankelijk is van uw Azure SignalR Service-resource. Omdat beheerde identiteit niet kan worden gebruikt voor tenants, moet u een toepassing registreren in tenant A en deze vervolgens inrichten als een bedrijfstoepassing in tenant B. Dit artikel helpt u bij het maken van een toepassing in tenant A en deze te gebruiken om verbinding te maken met een Azure SignalR Service-resource in tenant B.
Een multitenant-toepassing registreren in tenant A
De eerste stap is het maken van een multitenant-toepassing. Zie quickstart: Een toepassing registreren in Microsoft Entra-id voor meer informatie.
Als u al één tenanttoepassing hebt, volgt u de instructies in Een app met één tenant converteren naar meerdere tenants op Microsoft Entra-id.
Er zijn vier accounttypen:
- Accounts in dit organisatieadresboek
- Accounts in een willekeurige organisatieadreslijst
- Rekeningen in een organisatieadreslijst en persoonlijke Microsoft-accounts
- Persoonlijke Microsoft-accounts
Zorg ervoor dat u het tweede type of het derde type selecteert wanneer u de toepassing maakt.
.
Noteer de toepassings-id (client) en de directory-id (tenant) voor gebruik in de volgende stappen.
De toepassing inrichten in tenant B
U kunt de rol niet toewijzen aan de toepassing die is geregistreerd in een andere tenant. U moet deze inrichten als een externe bedrijfstoepassing in tenant B. Als u meer informatie nodig hebt, kunt u meer informatie vinden over de verschillen tussen app-registratie en bedrijfstoepassingen.
Kortom, de bedrijfstoepassing is een service-principal en de app-registratie is niet. De bedrijfstoepassing neemt bepaalde eigenschappen over van het toepassingsobject, zoals de toepassings-id (client).
Er wordt een standaardservice-principal gemaakt in de tenant waarin de app is geregistreerd. Voor andere tenants moet u de app inrichten om een service-principal voor bedrijfsapplicaties op te halen. Zie Een bedrijfstoepassing maken op basis van een multitenant-toepassing in Microsoft Entra-id voor meer informatie.
Bedrijfstoepassingen in verschillende tenants hebben verschillende directory (tenant) ID's, maar ze delen dezelfde toepassings-ID (client-ID).
Rollen toewijzen aan de bedrijfstoepassing
Nadat u de bedrijfstoepassing in uw tenant B hebt ingericht, kunt u er rollen aan toewijzen.
In de volgende stappen wordt beschreven hoe u een SignalR App Server-rol toewijst aan een service-principal of een beheerde identiteit voor een Azure SignalR Service-resource. Raadpleeg Azure-rollen toewijzen met de Azure Portal voor informatie over het toewijzen van rollen.
Opmerking
U kunt een rol toewijzen aan ieder gewenst bereik, waaronder een beheergroep, een abonnement, een resourcegroep of een enkele resource. Meer informatie over het bereik vindt u onder Bereik voor Azure RBAC begrijpen.
Ga in Azure Portal naar uw Azure SignalR Service-resource.
Selecteer in het linkerdeelvenster de optie Toegangscontrole (IAM).
Selecteer Toevoegen>Roltoewijzing toevoegen.
Selecteer op het tabblad Rol de optie SignalR-appserver. Andere ingebouwde rollen van Azure SignalR Service zijn afhankelijk van uw scenario.
Rol Beschrijving Gebruiksituatie SignalR-appserver Toegang tot de API's die serververbindingen maken en sleutels genereren. Meestal gebruikt voor een app-server met een Azure SignalR-resource die wordt uitgevoerd in de standaardmodus. SignalR-service-eigenaar Volledige toegang tot alle gegevensvlak-API's, waaronder REST API's, de API's die serververbindingen maken en de API's die sleutels/tokens genereren. Wordt gebruikt voor een onderhandelingsserver met een Azure SignalR Service-resource die wordt uitgevoerd in de serverloze modus. Hiervoor zijn zowel REST API-machtigingen als verificatie-API-machtigingen vereist. SignalR REST API-eigenaar Volledige toegang tot REST API's voor het gegevensvlak. Wordt gebruikt voor de Azure SignalR Management SDK voor het beheren van verbindingen en groepen, maar maakt geen serververbindingen of verwerkt onderhandelingsaanvragen. SignalR REST API Reader Alleen-lezentoegang tot REST API's van de gegevenslaag. Te gebruiken wanneer je een bewakingsprogramma schrijft dat read-only REST-API's aanroept. Kies Volgende.
Voor Microsoft Entra-toepassing:
- Selecteer in de rij Toegang toewijzen de optie Gebruiker, groep of service-principal.
- In de rij Leden, kies selecteer leden en kies vervolgens de identiteit in het pop-upvenster.
Voor beheerde identiteit voor Azure-resources:
- In de rij Toegang toewijzen selecteer Beheerde identiteit.
- In de rij Leden, kies Selecteer leden en kies vervolgens de toepassing in het pop-upvenster.
Kies Volgende.
Controleer uw opdracht en selecteer Vervolgens Beoordelen en toewijzen om de roltoewijzing te bevestigen.
Belangrijk
Het kan tot 30 minuten duren voordat nieuwe roltoewijzingen worden doorgevoerd.
Zie voor meer informatie over het toewijzen en beheren van Azure-rollen:
- Azure-rollen toewijzen met de Azure-portal
- Azure-rollen toewijzen met behulp van de REST API
- Azure-rollen toewijzen met Azure PowerShell
- Azure-rollen toewijzen met de Azure CLI
- Azure-rollen toewijzen met behulp van Azure Resource Manager-sjablonen
De Azure SignalR Service SDK configureren voor het gebruik van de bedrijfstoepassing
Een toepassing gebruikt drie verschillende typen referenties om zichzelf te verifiëren:
- Certificaten
- Clientgeheimen
- Federatieve identiteit
We raden u ten zeerste aan certificaten of clientgeheimen te gebruiken om aanvragen tussen tenants te maken.
Certificaten of clientgeheimen gebruiken
- De
tenantIdparameter is de id van uw tenant B. - De
clientIdparameters in beide tenants zijn gelijk. - De
clientSecretenclientCertparameters worden geconfigureerd in tenant A. Zie Referenties toevoegen voor meer informatie.
Zie Uw Microsoft Entra-tenant zoeken als u niet zeker weet wat uw tenant-id is.
services.AddSignalR().AddAzureSignalR(option =>
{
var credential1 = new ClientSecretCredential("tenantId", "clientId", "clientSecret");
var credential2 = new ClientCertificateCredential("tenantId", "clientId", "path-to-cert");
option.Endpoints = new ServiceEndpoint[]
{
new ServiceEndpoint(new Uri("https://<resource1>.service.signalr.net"), credential1),
new ServiceEndpoint(new Uri("https://<resource2>.service.signalr.net"), credential2),
};
});
Federatieve identiteit gebruiken
Om veiligheidsredenen kunnen certificaten en clientgeheimen worden uitgeschakeld in uw abonnement. In dit geval moet u een externe id-provider gebruiken of de preview-ondersteuning voor beheerde identiteit proberen. Voor meer informatie, zie:
- een app configureren om een externe id-provider te vertrouwen
- Een toepassing configureren om een beheerde identiteit te vertrouwen (preview)
Zie Microsoft Entra Cross-Tenant Application Federated Identity Credential (FIC) voor gedetailleerde informatie en videorichtlijnen.
Wanneer u beheerde identiteit als id-provider gebruikt, ziet de code eruit als in het volgende voorbeeld:
- De
tenantIdparameter is de id van uw tenant B. - De
clientIdparameters in beide tenants zijn gelijk.
services.AddSignalR().AddAzureSignalR(option =>
{
var msiCredential = new ManagedIdentityCredential("msiClientId");
var credential = new ClientAssertionCredential("tenantId", "appClientId", async (ctoken) =>
{
// Entra ID US Government: api://AzureADTokenExchangeUSGov
// Entra ID China operated by 21Vianet: api://AzureADTokenExchangeChina
var request = new TokenRequestContext([$"api://AzureADTokenExchange/.default"]);
var response = await msiCredential.GetTokenAsync(request, ctoken).ConfigureAwait(false);
return response.Token;
});
option.Endpoints = [
new ServiceEndpoint(new Uri(), "https://<resource>.service.signalr.net"), credential);
];
});
Wanneer u externe id-providers gebruikt, ziet de code eruit als in het volgende voorbeeld:
services.AddSignalR().AddAzureSignalR(option =>
{
var credential = new ClientAssertionCredential("tenantId", "appClientId", async (ctoken) =>
{
// Find your own way to get a token from the external identity provider.
// The audience of the token should be "api://AzureADTokenExchange" because it is the recommended value.
return "TheTokenYouGetFromYourExternalIdentityProvider";
});
option.Endpoints = [
new ServiceEndpoint(new Uri(), "https://<resource>.service.signalr.net"), credential);
];
});
Het opsporen van fouten bij het verkrijgen van tokens met de Azure SignalR Service SDK is een uitdaging omdat dit afhankelijk is van de tokenresultaten. U wordt aangeraden het proces voor het verkrijgen van tokens lokaal te testen voordat u integreert met de Azure SignalR Service SDK.
var assertion = new ClientAssertionCredential("tenantId", "appClientId", async (ctoken) =>
{
// Find your own way to get a token from the external identity provider.
// The audience of the token should be "api://AzureADTokenExchange" because it is the recommended value.
return TheTokenYouGetFromYourExternalIdentityProvider;
});
var request = new TokenRequestContext(["https://signalr.azure.com/.default");
var token = await assertion.GetTokenAsync(assertion);
Console.log(token.Token);
Het belangrijkste punt is om een interne referentie te gebruiken om een clientAssertion parameter op te halen van api://AzureADTokenExchange of andere vertrouwde identiteitsplatforms. Gebruik deze om te wisselen voor een token met de https://signalr.azure.com/.default doelgroep om toegang te krijgen tot uw resource.
Het doel is om een token te verkrijgen met de volgende claims. Gebruik jwt.io om het token te decoderen:
- oid: De waarde moet gelijk zijn aan de object-id van uw bedrijfstoepassing. Zie Een ondernemingsobject-id ophalen als u niet weet waar u deze kunt ophalen.
- tid: De waarde moet gelijk zijn aan de map-id van uw tenant B. Zie Uw Microsoft Entra-tenant zoeken als u niet zeker weet wat uw tenant-id is.
-
doelgroep: De doelgroep moet
https://signalr.azure.com/.defaulttoegang hebben tot Azure SignalR Service-resources.