其他分享
首页 > 其他分享> > CodeGo.net>如何获取用户的Active Directory令牌?

CodeGo.net>如何获取用户的Active Directory令牌?

作者:互联网

我正在开发客户端服务器应用程序.在使用此应用程序时,客户端和服务器具有相同的AD(Active Directory)域.

我希望服务器应用程序通过其AD用户验证每个客户端.这意味着,当用户运行客户端应用程序的实例时,服务器应了解哪个AD用户正在使用此应用程序实例并对其进行身份验证.因此,客户端应用程序必须向服务器发送一些信息.

一种解决方案是发送用户AD用户名.由于安全原因,此解决方案是不可接受的.

另一个解决方案是发送用户AD令牌(在登录Windows时将其提供给AD用户).在此解决方案中,服务器可以检查此令牌的有效性,因此它可以识别客户端AD用户并对其进行身份验证.现在的问题是,在实现客户端应用程序时,我不知道如何获取AD令牌.

我正在使用C#来实现客户端应用程序.你能帮我吗?还是对于这种身份验证有更好的解决方案?

解决方法:

从azure门户及其下方获取clientid / appid,密钥,以获取令牌.
通过单击右上角的帐户可以找到目录名称.

 string tenantName = "yourdirectoryName.OnMicrosoft.com";
            string authString = "https://login.microsoftonline.com/" + tenantName;
            AuthenticationContext authenticationContext = new AuthenticationContext(authString, false);
            // Config for OAuth client credentials             
            ClientCredential clientCred = new ClientCredential(clientId, appKey);
            string resource = "https://graph.windows.net";
            string token;
            try
            {
                AuthenticationResult authenticationResult = authenticationContext.AcquireToken(resource, clientCred);
                token = authenticationResult.AccessToken;
            }
            catch (AuthenticationException ex)
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine("Acquiring a token failed with the following error: {0}", ex.Message);
                if (ex.InnerException != null)
                {
                    Console.WriteLine("Error detail: {0}", ex.InnerException.Message);
                }
            }

标签:active-directory,authentication,client-server,c
来源: https://codeday.me/bug/20191028/1952939.html