【发布时间】:2016-02-28 12:46:59
【问题描述】:
我们可以使用以下代码成功获取令牌:
var certificate = Certificate.Load("Client.pfx", "notasecret");
var authenticationContext = new AuthenticationContext(authority);
var clientAssertionCertificate = new ClientAssertionCertificate(clientId, certificate);
return await authenticationContext.AcquireTokenAsync(resource, clientAssertionCertificate);
令牌似乎不包含任何我们可以用来识别客户端的信息。在我们的用例中,我们有许多与 API 通信的守护程序服务客户端。我们需要在服务器上有一些唯一可用的标识。
我还尝试创建我们自己的 JWT 令牌并添加了一些公共声明,例如名称。但是在使用以下代码片段请求客户端断言类型后
var content = new FormUrlEncodedContent(new Dictionary<string, string>
{
{ "clientid", clientId },
{ "resource", resource },
{ "client_assertion_type", "urn:ietf:params:oauth:client-assertion-type:jwt-bearer" },
{ "grant_type", "client_credentials" },
{ "client_assertion", jwt }
});
var httpClient = new HttpClient
{
BaseAddress = new Uri("https://login.windows.net/{guid}/")
};
var response = await httpClient.PostAsync("oauth2/token", content);
返回令牌没有我的自定义信息。
问题:有没有办法使用 ClientAssertionCertificate 流传递自定义声明?其中返回的令牌有附加信息。
【问题讨论】:
标签: jwt azure-active-directory adal