繁体   English   中英

使用经过身份验证的 Azure AD 用户对 CSOM 进行身份验证

[英]Authenticate CSOM using authenticated user of Azure AD

我在我的 asp.net 核心应用程序中使用 Azure Ad 身份验证,并希望使用使用其 AD 帐户进行身份验证的同一用户对 CSOM 进行身份验证。

一种方法可能是如果我获取当前用户的令牌并将其与 CSOM 的上下文一起使用。

这非常不清楚,Microsoft 文档也没有帮助。

非常感谢任何类型的帮助。

一种方法是使用 Microsoft.Identity.Client nuget 包。

示例(不确定它是否符合您的需求),仅供参考。

您需要创建PublicClientApplication

public IPublicClientApplication CreateClientApp()
{
    var clientApp = PublicClientApplicationBuilder.Create("clientId")
                .WithAuthority($"https://login.microsoftonline.com/{tenantId}")
                .WithDefaultRedirectUri()
                .Build();
    return clientApp;
}

获取token的方法

public async Task<string> GetTokenAsync()
{
    // permissions defines in Azure AD
    var scopes = new string[] {"https://<your_tenant_name>.sharepoint.com/<permission_name>"};
    var accounts = await clientApp.GetAccountsAsync();
    var firstAccount = accounts.FirstOrDefault();

    AuthenticationResult authResult;
    try
    {
        authResult = await clientApp.AcquireTokenSilent(scopes, firstAccount).ExecuteAsync();
    }
    catch (MsalUiRequiredException ex)
    {
        authResult = await clientApp
            .AcquireTokenByUsernamePassword(scopes, "userName", "password")
            .ExecuteAsync();
    }
    return authResult.AccessToken;
}

获取ClientContext的方法

public ClientContext GetContext(Uri web)
{
    var context = new ClientContext(web);

    context.ExecutingWebRequest += (sender, e) =>
    {
        string accessToken = GetTokenAsync().GetAwaiter().GetResult();
            e.WebRequestExecutor.RequestHeaders["Authorization"] = "Bearer " + accessToken;
    };

    return context;
}

资源:

MSAL

MSAL.NET

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM