C# 如何从客户端机密和开放id令牌获取访问令牌

C# 如何从客户端机密和开放id令牌获取访问令牌,c#,azure-active-directory,C#,Azure Active Directory,我有一个javascript应用程序作为客户端应用程序,它与后端服务器通信以获取信息。它们是解耦的,因此当用户登录时,服务器和客户端之间没有任何身份验证通信 我正在尝试设置服务器,以便将开放id令牌传递给服务器,然后让服务器将开放id令牌兑换为访问令牌 我已经使用证书(下面的代码)实现了这一点,但是我似乎无法通过使用客户机密码实现这一点 var authority = "https://login.microsoftonline.com/common"; // Construct client

我有一个javascript应用程序作为客户端应用程序,它与后端服务器通信以获取信息。它们是解耦的,因此当用户登录时,服务器和客户端之间没有任何身份验证通信

我正在尝试设置服务器,以便将开放id令牌传递给服务器,然后让服务器将开放id令牌兑换为访问令牌

我已经使用证书(下面的代码)实现了这一点,但是我似乎无法通过使用客户机密码实现这一点

var authority = "https://login.microsoftonline.com/common";

// Construct client assertion certificate
var clientAssertionCertificate = new ClientAssertionCertificate("<client_id", certificate);

var context = new AuthenticationContext(authority);

// User Assertion
var userAssertion = new UserAssertion(id_token);

authenticationResult = await context.AcquireTokenAsync("https://graph.microsoft.com", clientAssertionCertificate, userAssertion);
var权限=”https://login.microsoftonline.com/common";
//构造客户端断言证书

var clientassertificate=新的clientassertificate("当客户端希望接收访问令牌而不传输敏感信息(如客户端机密)时,使用JWT承载授权类型。我们通常在授权码授权中使用该类型作为客户端机密的替代。这也可用于受信任的客户端,以便在无需用户授权的情况下访问用户资源。p请阅读更多关于jwt承载人的信息

通常,此断言类型用于从本机客户端提供的访问令牌获取下游服务的访问令牌。(请参见此处的示例:)。您还可以单击以获取Azure AD的身份验证方案

var authority = "https://login.microsoftonline.com/common";

// Construct client assertion
var clientAssertion = new ClientAssertion("<client_id>", "<client_secret>");

var context = new AuthenticationContext(authority);

// User Assertion
var userAssertion = new UserAssertion(id_token);

authenticationResult = await context.AcquireTokenAsync("https://graph.microsoft.com", clientAssertion, userAssertion);