मैं MSAL और क्लाइंट क्रेडेंशियल फ़्लो का उपयोग करने पर विचार कर रहा हूँ, हालाँकि, एक बात है जो मुझे पूरी तरह से समझ में नहीं आती है।

माइक्रोसॉफ्ट द्वारा प्रदान किए गए उदाहरण में: https:// github.com/Azure-Samples/active-directory-dotnetcore-daemon-v2/blob/master/daemon-console/Program.cs

एक्सेस टोकन प्राप्त करने के लिए निम्न कोड का उपयोग किया जाता है:

var clientCredentials = new ClientCredential(_clientSecret);
var app = new ConfidentialClientApplication(_clientId, _authority, "https://daemon", clientCredentials, null, new TokenCache());
string[] scopes = new string[] { "https://graph.microsoft.com/.default" };
AuthenticationResult result = await app.AcquireTokenForClientAsync(scopes);

इस मामले में रीडायरेक्टयूरी के साथ क्या है?

मैंने रीडायरेक्टयूरी के रूप में अलग-अलग मानों की कोशिश की है और ऐसा लगता है कि यह किसी भी तरह से काम करता है ... लेकिन अगर मैं एक सापेक्ष पथ या शून्य जोड़ता हूं तो यह टोकन प्राप्त करने में विफल रहता है। यह मान क्या होना चाहिए?

कंसोल एप्लिकेशन के लिए URL पर सुनने का कोई मतलब नहीं है, हालांकि, ConfidentialClientApplication के लिए प्रलेखन कहता है कि यह आवश्यक है।

1
agnsaft 21 फरवरी 2019, 23:12

1 उत्तर

सबसे बढ़िया उत्तर

क्लाइंट क्रेडेंशियल प्रवाह के साथ एक्सेस टोकन का अनुरोध करने के लिए, ऐप ऐप के क्रेडेंशियल के साथ Azure AD के टोकन एंडपॉइंट पर HTTP POST टोकन अनुरोध भेजेगा, AAD प्रतिक्रिया में एक्सेस टोकन लौटाएगा, इस परिदृश्य में रीडायरेक्ट url की आवश्यकता नहीं है। स्रोत कोड के अनुसार, रीडायरेक्ट url का भी उपयोग नहीं किया जाता है:

private async Task<AuthenticationResult> AcquireTokenForClientCommonAsync(IEnumerable<string> scopes, bool forceRefresh, ApiEvent.ApiIds apiId, bool sendCertificate)
{
    Authority authority = Instance.Authority.CreateAuthority(ServiceBundle, Authority, ValidateAuthority);
    AuthenticationRequestParameters parameters = CreateRequestParameters(authority, scopes, null,
        AppTokenCache);
    parameters.IsClientCredentialRequest = true;
    parameters.SendCertificate = sendCertificate;
    var handler = new ClientCredentialRequest(
        ServiceBundle,
        parameters,
        apiId,
        forceRefresh);

    return await handler.RunAsync(CancellationToken.None).ConfigureAwait(false);
}

लेकिन इस बिंदु पर ConfidentialClientApplication को प्रारंभ करते समय आपको एक मान्य url प्रदान करना चाहिए।

2
Nan Yu 22 फरवरी 2019, 03:18