ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2019-10-28 14:18:14  阅读:195  来源: 互联网

标签:active-directory authentication client-server c


我正在开发客户端服务器应用程序.在使用此应用程序时,客户端和服务器具有相同的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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有