我想确认ADFS
支持oAuth 2.0
完全支持oAuth 2.0
的所有流程,即
3-legged oAuth
2-legged oAuht
隐含流量
我问这个是因为我尝试使用资源所有者密码流(2条腿的Oauth)。这是我的代码
using (HttpClient client = new HttpClient())
{
string creds = String.Format("{0}:{1}", "hello@ADFS FQDN", "christ");
byte[] bytes = Encoding.ASCII.GetBytes(creds);
var header = new AuthenticationHeaderValue("Basic",
Convert.ToBase64String(bytes));
client.DefaultRequestHeaders.Authorization = header;
var postData = new List<KeyValuePair<string, string>>();
postData.Add(new KeyValuePair<string, string>
("grant_type", "password"));
HttpContent content = new FormUrlEncodedContent(postData);
token = client.PostAsync("http://adfs FQDN/adfs/oauth2/token/", content)
.Result.Content.ReadAsStringAsync().Result;
}
它给了我错误grant_Type=password is not supported
。
当我查看ADFS 2012 R2机器事件查看器日志时,它也会出现错误
“授权服务器不支持请求的'grant_type':'password'。授权服务器目前仅支持'grant_type = authorization_code'。”
请帮助我如何实现这一流程?
答案 0 :(得分:7)
AD FS 3.0(2012 R2)不支持OAuth 2.0的 grant_type =密码,但它支持 grant_type = authorization_code 和 grant_type = refresh_token 只要。 AD FS提供WS-Trust端点,您可以使用它们而不是OAuth 2.0端点来发布和交换令牌。 WS-Trust为不同类型的身份验证提供端点。