gpt4 book ai didi

azure - 使用 Oauth 2 来自 Azure AD 的 "The access grant authorization_code is not supported"

转载 作者:行者123 更新时间:2023-12-01 00:58:44 25 4
gpt4 key购买 nike

我正处于 Authorization Code Grant Flow 之中使用 Azure AD。尽管文档说 grant_type 应该是 authorization_code,但我收到了有关此属性的错误消息。

POST https://login.windows.net/SOME_AZURE_AD_UUID/oauth2/token?api-version=1.0
Content-Type: application/x-www-form-urlencoded

client_id=SECRET_CLIENT_ID
&client_secret=SECRET_CLIENT_SECRET
&code=SECRET_CODE
&grant_type=authorization_code
&redirect_uri=https://myserver.example.com/login/auth_return
&resource=https://myserver.example.com/
&scope=openid email

(编辑:为了清晰起见添加了空格)

我返回的错误:

HTTP/1.1 400 Bad request
Content-Length: 436
X-Content-Type-Options: nosniff
X-Powered-By: ASP.NET
Request-Id: SOME_REQUEST_ID
X-Ms-Request-Id: SOME_REQUEST_ID
Strict-Transport-Security: max-age=31536000; includeSubDomains
Set-Cookie: x-ms-gateway-slice=slicea; path=/; secure; HttpOnly, stsservicecookie=acs; path=/; secure; HttpOnly
Server: Microsoft-IIS/8.0
Cache-Control: private
Date: Wed, 20 Aug 2014 14:44:08 GMT
Content-Type: application/json; charset=utf-8

{
"correlation_id": "SOME_CORRELATION_ID",
"error": "unsupported_grant_type",
"error_codes": [
70003
],
"error_description": "
ACS70003: The access grant 'authorization_code' is not supported.\r\n
Trace ID: SOME_TRACE_UUID\r\n
Correlation ID: SOME_CORRELATION_ID\r\n
Timestamp: 2014-08-20 14:44:08Z",
"timestamp": "2014-08-20 14:44:08Z",
"trace_id": "SOME_TRACE_UUID"
}

(为了清晰起见添加了空格)

如果我将 grant_type 更改为 client_credentials,此请求确实有效(但我还没有找到一种方法来使用生成的 token 来满足我的需要)。如果我更改一些 URL 以指向 Google 而不是 Azure AD,它也会起作用。

这些请求是否存在错误,或者服务是否确实不支持记录的 authorization_codegrant_type

最佳答案

我认为这是一个错误,我花了 2-3 天才解决它。请执行以下操作以使其正常工作,

1) 从您的 URL 中删除“?api-version=1.0”。我知道这听起来很奇怪,但相信我,他们的文档一团糟。

2)在您的请求中添加“Content-Type”:“application/x-www-form-urlencoded” header (因此您必须对发布数据值进行编码...例如redirect_url =(encodedURL)等等

3) 从发布数据中删除不必要的字段 REFER ...应该是这样的

{
'grant_type': "authorization_code",
'resource': "your resource",
'client_id': "your client Id",
'redirect_uri': "your redirect URL",
'client_secret': "your client secret",
'code': "the code u got"
}

我发现您已经完成了第 2 点,因此您需要执行第 1 点,然后就可以开始了。

此外,如果您想快速获取 access_token(如果我所说的对您不起作用),请在 grant_type 中传递“client_credentials”,您将获得更小的 access_token 响应。但如果您还想使用refresh_token 获得完整响应,则必须执行所有这些步骤。

编辑:他们的文档中还有一个错误,对于刷新 token >>>,URL 应该是 oauth2/token 而不是 oauth2/authorize

希望这有帮助!

关于azure - 使用 Oauth 2 来自 Azure AD 的 "The access grant authorization_code is not supported",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25408669/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com