1Az online szolgáltatásokra vonatkozó univerzális licencfeltételek nyilvános előzetes verziójú kódtárakra vonatkoznak.
A szolgáltató konfigurálása
A démonalkalmazások a delegált engedélyek helyett alkalmazásengedélyeket használnak. Így a támogatott fióktípusuk nem lehet semmilyen szervezeti címtárban vagy személyes Microsoft-fiókban (például Skype, Xbox, Outlook.com). Nincs olyan bérlői rendszergazda, aki beleegyezést ad egy microsoftos személyes fiók démonalkalmazásához. Ki kell választania a szervezeten belüli fiókokat vagy bármely szervezet fiókjait.
Az alkalmazáskonfigurációban megadott szolgáltatót bérlőként kell megadni (bérlőazonosítót vagy a szervezethez társított tartománynevet).
Még ha több-bérlős eszközt is szeretne megadni, akkor is használjon bérlőazonosítót vagy tartománynevet, és necommon vagy organizations ezzel a folyamattal, mert a szolgáltatás nem tudja megbízhatóan kikövetkeztetni, hogy melyik bérlőt kell használnia.
Az alkalmazás konfigurálása és példányosítása
Az MSAL-kódtárakban az ügyfél hitelesítő adatai (titkos vagy tanúsítvány) a bizalmas ügyfélalkalmazás-konstrukció paramétereként lesznek átadva.
Fontos
Még ha az alkalmazás egy szolgáltatásként futó konzolalkalmazás is, akkor is bizalmas ügyfélalkalmazásnak kell lennie, ha démonalkalmazásról van szó.
Konfigurációs fájl
A konfigurációs fájl a következőket határozza meg:
A felhőpéldány és a bérlőazonosító, amelyek együttesen alkotják a szolgáltatót.
Az alkalmazásregisztrációból kapott ügyfélazonosító.
{
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"TenantId": "[Enter here the tenantID or domain name for your Azure AD tenant]",
"ClientId": "[Enter here the ClientId for your application]",
"ClientCredentials": [
{
"SourceType": "ClientSecret",
"ClientSecret": "[Enter here a client secret for your application]"
}
]
}
}
# Credentials
TENANT_ID=Enter_the_Tenant_Info_Here
CLIENT_ID=Enter_the_Application_Id_Here
// You provide either a ClientSecret or a CertificateConfiguration, or a ClientAssertion. These settings are exclusive
CLIENT_SECRET=Enter_the_Client_Secret_Here
CERTIFICATE_THUMBPRINT=Enter_the_certificate_thumbprint_Here
CERTIFICATE_PRIVATE_KEY=Enter_the_certificate_private_key_Here
CLIENT_ASSERTION=Enter_the_Assertion_String_Here
# Endpoints
// the Azure AD endpoint is the authority endpoint for token issuance
AAD_ENDPOINT=Enter_the_Cloud_Instance_Id_Here // https://login.microsoftonline.com/
// the graph endpoint is the application ID URI of Microsoft Graph
GRAPH_ENDPOINT=Enter_the_Graph_Endpoint_Here // https://graph.microsoft.com/
{
"authority": "https://login.microsoftonline.com/<your_tenant_id>",
"client_id": "your_client_id",
"scope": [ "https://graph.microsoft.com/.default" ],
"secret": "The secret generated by Azure AD during your confidential app registration",
"endpoint": "https://graph.microsoft.com/v1.0/users"
}
{
"authority": "https://login.microsoftonline.com/<your_tenant_id>",
"client_id": "your_client_id",
"scope": [ "https://graph.microsoft.com/.default" ],
"thumbprint": "790E... The thumbprint generated by Azure AD when you upload your public cert",
"private_key_file": "server.pem",
"endpoint": "https://graph.microsoft.com/v1.0/users"
}
{
"Instance": "https://login.microsoftonline.com/{0}",
"Tenant": "[Enter here the tenantID or domain name for your Azure AD tenant]",
"ClientId": "[Enter here the ClientId for your application]",
"ClientSecret": "[Enter here a client secret for your application]",
"CertificateName": "[Or instead of client secret: Enter here the name of a certificate (from the user cert store) as registered with your application]"
}
Megadhat egy ClientSecret vagy egy CertificateName. Ezek a beállítások kizárólagosak.
Az MSAL-alkalmazás példányosítása
Az MSAL-alkalmazás példányosításához adja hozzá, hivatkozzon vagy importálja az MSAL-csomagot (a nyelvtől függően).
A konstrukció eltérő attól függően, hogy ügyfél titkos kulcsokat vagy tanúsítványokat használ (vagy speciális forgatókönyvként aláírt állításokat).
class Program
{
static async Task Main(string[] _)
{
// Get the Token acquirer factory instance. By default it reads an appsettings.json
// file if it exists in the same folder as the app (make sure that the
// "Copy to Output Directory" property of the appsettings.json file is "Copy if newer").
TokenAcquirerFactory tokenAcquirerFactory = TokenAcquirerFactory.GetDefaultInstance();
// Configure the application options to be read from the configuration
// and add the services you need (Graph, token cache)
IServiceCollection services = tokenAcquirerFactory.Services;
services.AddMicrosoftGraph();
// By default, you get an in-memory token cache.
// For more token cache serialization options, see https://aka.ms/msal-net-token-cache-serialization
// Resolve the dependency injection.
var serviceProvider = tokenAcquirerFactory.Build();
// ...
}
}
# Pass the parameters.json file as an argument to this Python script. E.g.: python your_py_file.py parameters.json
config = json.load(open(sys.argv[1]))
# Create a preferably long-lived app instance that maintains a token cache.
app = msal.ConfidentialClientApplication(
config["client_id"], authority=config["authority"],
client_credential=config["secret"],
# token_cache=... # Default cache is in memory only.
# You can learn how to use SerializableTokenCache from
# https://msal-python.rtfd.io/en/latest/#msal.SerializableTokenCache
)
Ez Authority a felhőpéldány és a bérlőazonosító összefűzése, például https://login.microsoftonline.com/contoso.onmicrosoft.com vagy https://login.microsoftonline.com/aaaabbbb-0000-cccc-1111-dddd2222eeee. A konfigurációs fájl szakaszban látható appsettings.json fájlban a példányt és a bérlőt az és az InstanceTenant értékek jelölik.
A kódmintában az előző kódrészlet származik, Authority az AuthenticationConfig osztály egyik tulajdonsága, és a következőképpen van definiálva:
/// <summary>
/// URL of the authority
/// </summary>
public string Authority
{
get
{
return String.Format(CultureInfo.InvariantCulture, Instance, Tenant);
}
}
A bizalmas ügyfélalkalmazás példányosítása ügyféltanúsítvánnyal
Az alábbi kóddal hozhat létre egy alkalmazást egy tanúsítvánnyal:
Maga a kód pontosan ugyanaz. A tanúsítványt a konfiguráció ismerteti.
A tanúsítvány beszerzésének számos módja van. További részletekért lásd: https://aka.ms/ms-id-web-certificates.
Így szerezheti be a tanúsítványt a KeyVaultból. A Microsoft-identitás delegáltja az Azure Identity DefaultAzureCredential szolgáltatását, és felügyelt identitást használt, ha elérhető a KeyVault tanúsítványának eléréséhez. Az alkalmazást helyileg is hibakeresésre használhatja, mivel az a fejlesztői hitelesítő adatokat használja.
# Pass the parameters.json file as an argument to this Python script. E.g.: python your_py_file.py parameters.json
config = json.load(open(sys.argv[1]))
# Create a preferably long-lived app instance that maintains a token cache.
app = msal.ConfidentialClientApplication(
config["client_id"], authority=config["authority"],
client_credential={"thumbprint": config["thumbprint"], "private_key": open(config['private_key_file']).read()},
# token_cache=... # Default cache is in memory only.
# You can learn how to use SerializableTokenCache from
# https://msal-python.rtfd.io/en/latest/#msal.SerializableTokenCache
)
Az ügyfél titkos kulcsának vagy tanúsítványának használata mellett a bizalmas ügyfélalkalmazások ügyfél-állításokkal is igazolhatják személyazonosságukat. Részletekért lásd a CredentialDescription parancsot .
Az MSAL Pythonban az ügyféljogcímeket az ezzel ConfidentialClientApplicationa titkos kulccsal aláírt jogcímekkel adhatja meg.
# Pass the parameters.json file as an argument to this Python script. E.g.: python your_py_file.py parameters.json
config = json.load(open(sys.argv[1]))
# Create a preferably long-lived app instance that maintains a token cache.
app = msal.ConfidentialClientApplication(
config["client_id"], authority=config["authority"],
client_credential={"thumbprint": config["thumbprint"], "private_key": open(config['private_key_file']).read()},
client_claims = {"client_ip": "x.x.x.x"}
# token_cache=... # Default cache is in memory only.
# You can learn how to use SerializableTokenCache from
# https://msal-python.rtfd.io/en/latest/#msal.SerializableTokenCache
)
További részletekért tekintse meg a ConfidentialClientApplication MSAL Python-referenciadokumentációját.
Ügyfélkulcs vagy tanúsítvány helyett a bizalmas ügyfélalkalmazás az ügyfélmegfelelőségekkel is igazolni tudja az identitását.
MSAL.NET két módszere van arra, hogy aláírt állításokat biztosítson a bizalmas ügyfélalkalmazásnak:
.WithClientAssertion()
.WithClientClaims()
Ha használja WithClientAssertion, adjon meg egy aláírt JWT-t. Ezt a speciális forgatókönyvet az ügyfél-állítások részletezik.
Ha használja WithClientClaims, MSAL.NET létrehoz egy aláírt állítást, amely tartalmazza a Microsoft Entra ID által elvárt jogcímeket, valamint a küldeni kívánt további ügyféljogcímeket.
Ez a kód bemutatja, hogyan teheti ezt meg:
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ: https://aka.ms/ContentUserFeedback.
Visszajelzés küldése és megtekintése a következőhöz: