使用clientsecret MSAL

时间:2019-08-07 10:43:25

标签: adal msal

我已成功使用ADAL,并想升级到MSAL。 我在ADAL中使用了以下代码

        var tenantId = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";
        var clientId = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";
        var clientSecret = @"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
        var applicationId = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";
        var authority = $"https://login.microsoftonline.com/{tenantId}";
        var ac = new AuthenticationContext(authority);
        var clientCred = new ClientCredential(clientId, clientSecret);
        var authenticationResult = ac.AcquireTokenAsync(applicationId, clientCred).Result;
        string authToken = authenticationResult.AccessToken;

通过此代码,我将获得有效的访问令牌来访问Web应用

使用MSAL,我不知道该怎么用。默认的图形作用域为我提供了有效的令牌,但无法访问我的应用程序。

            IConfidentialClientApplication app = ConfidentialClientApplicationBuilder.Create(clientId)
            .WithClientSecret(clientSecret)
            .WithAuthority(new Uri(authority))
            .Build();

        var authenticationResult2 = await app.AcquireTokenForClient(new []{ "https://graph.microsoft.com/.default" }).ExecuteAsync();
        string authToken2 = authenticationResult2.AccessToken;

在哪里可以找到该应用程序的有效范围。 enter image description here

1 个答案:

答案 0 :(得分:0)

范围的格式为resource / .default。在这种情况下

            var authenticationResult2 = await app.AcquireTokenForClient(new []{ applicationId + "/.default" }).ExecuteAsync();