当尝试从ADFS获取访问令牌时,我一直收到400 bad request
响应。我正在使用以下代码来获取访问令牌:
var client = new HttpClient();
client.BaseAddress = new Uri("xxx");
var request = new HttpRequestMessage(HttpMethod.Post, "/adfs/oauth2/token");
var keyValues = new List<KeyValuePair<string, string>>();
keyValues.Add(new KeyValuePair<string, string>("grant_type", "authorization_code"));
keyValues.Add(new KeyValuePair<string, string>("client_id", "xxx"));
keyValues.Add(new KeyValuePair<string, string>("redirect_uri", "xxx"));
keyValues.Add(new KeyValuePair<string, string>("code", model.AuthCode));
keyValues.Add(new KeyValuePair<string, string>("resource", "xxx"));
request.Content = new FormUrlEncodedContent(keyValues);
var accessTokenResponse = await client.SendAsync(request);
我非常确定xxx标记的变量是正确的,因为与Postman中的变量进行完全相同的发布可以正常工作。
答案 0 :(得分:0)
在您的域控制器上转到adsiedit.msc,然后查看您的服务帐户。如果您进入属性,则可以向下滚动到servicePrinicpalName并确切查看为其配置的内容。确保您的ADFS服务器在此处列出。您将需要为其添加SPN(http / yourFqdnAdfsServer)并保存。这只是协议和主机名,格式如下:http / myserver。
答案 1 :(得分:0)
这是由于没有正确的证书来请求令牌。 安装此证书即可解决问题。