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