ADFS 3.0 oAuth oauth2/token->;没有注册的协议

ADFS 3.0 oAuth oauth2/token->;没有注册的协议,oauth,windows-server-2012-r2,adfs3.0,Oauth,Windows Server 2012 R2,Adfs3.0,我正在尝试使用adfs的oAuth功能,但正在努力从中获取访问令牌。 安装程序是安装在virtualbox vm中的Windows Server 2012 R2预览版 我可以通过发出以下命令获得访问代码: https://asdf.bla.dev/adfs/oauth2/authorize?response_type=code&client_id=abcd-abcd-abcd&redirect_uri=https://localhost/auth&resource=tes

我正在尝试使用adfs的oAuth功能,但正在努力从中获取访问令牌。 安装程序是安装在virtualbox vm中的Windows Server 2012 R2预览版

我可以通过发出以下命令获得访问代码:

https://asdf.bla.dev/adfs/oauth2/authorize?response_type=code&client_id=abcd-abcd-abcd&redirect_uri=https://localhost/auth&resource=testservice.asdf.oauth
这会将我重定向到以下url

https://localhost/auth?code=U2dIhBsRt0eDnEhAEq2fcw.d3LeME__0QgBAC8zvLR6mTlRvC0.fLKd5eQRjXslTEeEck17m6Zo4fKKO9oGk2byUyr4CyLQHKSJs5wKzWZcusLXqXk22tdzvswxBjzaYcCqzkbeT5VxhMEdq97vbSnGAQ1tVD0vutVIfbx1Mb5A-QItgOx8a8LBapn7axCpGThoVH2jWCVM59X5eOt9ACuJTTK1UFbNaldaTkuGdqrtcGC8tFoSOP96G-4sHgIBpi2t8BSwCdf3asDd3AJAOYk6gnUkH5WJQRf2pg4S_AkgOxseeZW8Y5qbWAajyESkEmJ-UcWkV98uHlrmNsFwTSJ-ZoNk-aZI_U85ZlZrsdpKzocrWM5HmfcvXm5XdXz2QXIHngIBTA
但当我尝试使用此请求兑换代币时:

https://asdf.bla.dev/adfs/oauth2/token?grant_type=authorization_code&client_id=abcd-abcd-abcd&redirect_uri=https://localhost/auth&code=U2dIhBsRt0eDnEhAEq2fcw.d3LeME__0QgBAC8zvLR6mTlRvC0.fLKd5eQRjXslTEeEck17m6Zo4fKKO9oGk2byUyr4CyLQHKSJs5wKzWZcusLXqXk22tdzvswxBjzaYcCqzkbeT5VxhMEdq97vbSnGAQ1tVD0vutVIfbx1Mb5A-QItgOx8a8LBapn7axCpGThoVH2jWCVM59X5eOt9ACuJTTK1UFbNaldaTkuGdqrtcGC8tFoSOP96G-4sHgIBpi2t8BSwCdf3asDd3AJAOYk6gnUkH5WJQRf2pg4S_AkgOxseeZW8Y5qbWAajyESkEmJ-UcWkV98uHlrmNsFwTSJ-ZoNk-aZI_U85ZlZrsdpKzocrWM5HmfcvXm5XdXz2QXIHngIBTA
出现错误,我没有获取访问令牌

adfs服务的事件查看器声明以下错误:

路径/adfs/oauth2/token上没有用于处理传入请求的已注册协议处理程序

我根据以下信息生成请求:


我不知道出了什么问题,非常感谢你的帮助

看起来您使用HTTP GET访问令牌端点,但它应该是HTTP POST。

您走对了方向。您可以获得重定向URI的代码。现在,我们必须使用以下参数向
/token
端点发出POST请求:

  • code
    -您必须使用一些编程逻辑从URL中提取此值
  • client\u id
  • redirect\u uri
  • grant\u type
    -使用值“authorization\u code”

作为回应,您应该获得一个JWT访问令牌。

我知道线程已经很旧了,但今天我在尝试解决此错误时遇到了麻烦。我检查了http.sys,重新安装了服务器角色,。。。什么都没用

最后,我不得不发现这个疯狂的ADF(再次)返回垃圾错误消息。经过5个小时的调试后,我不再信任postman(即使它已经几个月没有问题了),并使用一个简短的PowerShell脚本使用访问代码调用POST:

$client = new-object net.webclient

$form = New-Object System.Collections.Specialized.NameValueCollection
$form.Add("client_id", "you client id")
$form.Add("grant_type", "authorization_code")
$form.Add("code", "authorization code")
$form.Add("redirect_uri", "your redirect uri")

$result = $client.UploadValues("https://sso.mydomain.com/adfs/oauth2/token", "POST", $form)
$decodedToken = $client.Encoding.GetString($result);
瞧。。。一切正常。因此,我回到了破损的postman查询,剥离了所有url参数,删除了所有标题,并将这些参数添加到x-www-form-urlencoded选项卡。然后它又在那里工作了


有意义的错误肯定会有帮助。希望这能为用户节省许多令人沮丧的尝试和错误时间…

假设参数值也正确地进行了URL编码(特别是
重定向\u uri的值),看起来这是与服务器端的配置相关的,抱歉。您可以尝试向令牌端点URL添加一个尾随斜杠。您知道在服务器端查找什么吗?