为了账号安全,请及时绑定邮箱和手机立即绑定

从 WPF 应用程序检查用户是否存在于 Azure AD 中

从 WPF 应用程序检查用户是否存在于 Azure AD 中

C#
qq_笑_17 2023-06-25 13:40:52
我有一个 WPF 应用程序,其身份验证是 AzureAD。如果有任何新用户出现,我们首先会在 Azure AD 中添加该用户,然后将同一用户添加到我们的 WPF 应用程序中。将该用户添加到 WPF 时,我们需要验证该用户是否存在于 Azure 中步骤 1. 网络管理员在 Azure AD 中创建用户 2. 我们的项目管理员将该用户添加到 Azure 中的客户端 3. 项目管理员使用 azure 身份验证登录到我们的 WPF 应用程序并添加此用户 4. 此时我们需要重新检查azureAD 中存在新用户。这意味着项目管理员使用 Azure 身份验证登录到 WPF 应用程序 [他的用户 ID、票证、客户端 ID 等可用],并且他尝试检查用户是否提供了 Azure AD [新用户名可用,但该管理员不知道密码]。请帮我编写 c# 代码来解决这个问题。
查看完整描述

1 回答

?
偶然的你

TA贡献1841条经验 获得超3个赞

关于这个问题,请参考以下代码


//install Active Directory Authentication Library (ADAL) and Azure Active Directory Graph Client Library

    public static ActiveDirectoryClient GetActiveDirectoryClientAsApplication()

        {

            Uri servicePointUri = new Uri(ResourceId);

            Uri serviceRoot = new Uri(servicePointUri,tenant);

            ActiveDirectoryClient activeDirectoryClient = new ActiveDirectoryClient(serviceRoot,

                async () => await AcquireTokenAsyncForApplication());

            return activeDirectoryClient;

        }


        public static async Task<string> AcquireTokenAsyncForApplication()

        {

            return await GetTokenForApplication();

        }


        /// <summary>

        /// Get Token for Application.

        /// </summary>

        /// <returns>Token for application.</returns>

        public static async Task<string> GetTokenForApplication()

        {


                AuthenticationContext authenticationContext = new AuthenticationContext(

                    authority,

                    false);


                // Configuration for OAuth client credentials 



                    ClientCredential clientCred = new ClientCredential(

                        clientId,

                        cred);

                    AuthenticationResult authenticationResult =

                        await authenticationContext.AcquireTokenAsync(ResourceId, clientCred);

                   var TokenForApplication = authenticationResult.AccessToken;



            return TokenForApplication;

        }


        public async Task<object> Getuser()

        {


            ActiveDirectoryClient client = GetActiveDirectoryClientAsApplication();

            var userLookupTask = client.Users.Where(

         user => user.UserPrincipalName.Equals(

        "", StringComparison.CurrentCultureIgnoreCase)).ExecuteSingleAsync();

            User result =(User) await userLookupTask;

            return result;


        }


        public async Task Adduser() {

            ActiveDirectoryClient client = GetActiveDirectoryClientAsApplication();

            var newUser = new User()

            {

                // Required settings

                DisplayName = "",

                UserPrincipalName = "",

                PasswordProfile = new PasswordProfile()

                {

                    Password = "H@ckMeNow!",

                    ForceChangePasswordNextLogin = false

                },

                MailNickname = "",

                AccountEnabled = true,


                // Some (not all) optional settings

                GivenName = "",

                Surname = "",

                JobTitle = "",

                Department = "",

                City = "",

                State = "",

                Mobile = "",

            };


            await client.Users.AddUserAsync(newUser);


        }


查看完整回答
反对 回复 2023-06-25
  • 1 回答
  • 0 关注
  • 88 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信