如何修复 Microsoft Graph 中的 "AADSTS90102: 'redirect_uri' value must be a valid absolute Uri." 错误
How to fix "AADSTS90102: 'redirect_uri' value must be a valid absolute Uri." error in Microsoft Graph
按照这个程序:
https://docs.microsoft.com/en-us/graph/auth-v2-user
我正在尝试从此 Microsoft 端点获取刷新令牌:
https://login.microsoftonline.com/{tenantId}/oauth2/v2.0/authorize
使用来自 nuget(asp.net 核心 2.2)库的 System.Net.Http.HttpClient class 的 PostAsync 方法,我能够得到响应返回此错误:"AADSTS90102: 'redirect_uri' value must be a valid absolute Uri.":
我尝试在 Azure 门户中设置一些重定向 url,包括:
https://automation.legroupeti.com/Configurations/GetRefreshToken/
https://automation.legroupeti.com/Configurations/GetRefreshToken
https://automation.legroupeti.com/
https://automation.legroupeti.com
post 请求如下(使用来自 System.Net.Http.HttpClient class 来自 nuget 的 PostAsync 方法(asp.net core 2.2 )):
这是在 Azure 门户中注册的应用程序配置的重定向 urls:
我期待端点的有效响应。
如何配置 redirect_uri 有效?
编辑 1
我修复了 redirect_uri 参数。
您似乎混合了授权端点和令牌端点。
如果您希望用户进行身份验证,则必须将用户重定向到 URL,而不是向其发送 POST 请求。
用户returns访问你的应用后,你需要用授权码换取token。
文档:https://docs.microsoft.com/en-us/azure/active-directory/develop/scenario-web-app-call-api-overview
如果您只想为您的应用程序使用令牌而不需要用户身份验证,则需要调用令牌端点。
文档:https://docs.microsoft.com/en-us/azure/active-directory/develop/scenario-daemon-overview
从屏幕截图来看,URLEncoding 似乎不正确。路径中的 '/' 字符应编码为 %2F,而您的代码有 %2。 (在“.com”之后和 'Configurations' 之前)
另外,您是否考虑过SDK中的Authorization Provider?
https://docs.microsoft.com/en-us/graph/sdks/choose-authentication-providers?tabs=CS#AuthCodeProvider
我遇到了这个错误,对我来说,问题是我在对 /oauth2/v2.0/token
端点的 post 请求中对 redirect_uri
值进行了编码。请注意 redirect_uri
未在此请求中编码。
POST /{Tenant ID}/oauth2/v2.0/token HTTP/1.1
Host: login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded
Cookie: {cookie}
Content-Length: 941
client_id={Application (client) ID}
&scope=https://graph.microsoft.com/mail.read
&redirect_uri=http://localhost/myapp/
&grant_type=authorization_code
&client_secret={secret}
&code={code}
我使用微软提供的 Postman 示例来查找根本原因。
按照这个程序: https://docs.microsoft.com/en-us/graph/auth-v2-user
我正在尝试从此 Microsoft 端点获取刷新令牌: https://login.microsoftonline.com/{tenantId}/oauth2/v2.0/authorize
使用来自 nuget(asp.net 核心 2.2)库的 System.Net.Http.HttpClient class 的 PostAsync 方法,我能够得到响应返回此错误:"AADSTS90102: 'redirect_uri' value must be a valid absolute Uri.":
我尝试在 Azure 门户中设置一些重定向 url,包括:
https://automation.legroupeti.com/Configurations/GetRefreshToken/
https://automation.legroupeti.com/Configurations/GetRefreshToken
https://automation.legroupeti.com/
https://automation.legroupeti.com
post 请求如下(使用来自 System.Net.Http.HttpClient class 来自 nuget 的 PostAsync 方法(asp.net core 2.2 )):
这是在 Azure 门户中注册的应用程序配置的重定向 urls:
我期待端点的有效响应。 如何配置 redirect_uri 有效?
编辑 1
我修复了 redirect_uri 参数。
您似乎混合了授权端点和令牌端点。
如果您希望用户进行身份验证,则必须将用户重定向到 URL,而不是向其发送 POST 请求。 用户returns访问你的应用后,你需要用授权码换取token。 文档:https://docs.microsoft.com/en-us/azure/active-directory/develop/scenario-web-app-call-api-overview
如果您只想为您的应用程序使用令牌而不需要用户身份验证,则需要调用令牌端点。 文档:https://docs.microsoft.com/en-us/azure/active-directory/develop/scenario-daemon-overview
从屏幕截图来看,URLEncoding 似乎不正确。路径中的 '/' 字符应编码为 %2F,而您的代码有 %2。 (在“.com”之后和 'Configurations' 之前)
另外,您是否考虑过SDK中的Authorization Provider? https://docs.microsoft.com/en-us/graph/sdks/choose-authentication-providers?tabs=CS#AuthCodeProvider
我遇到了这个错误,对我来说,问题是我在对 /oauth2/v2.0/token
端点的 post 请求中对 redirect_uri
值进行了编码。请注意 redirect_uri
未在此请求中编码。
POST /{Tenant ID}/oauth2/v2.0/token HTTP/1.1
Host: login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded
Cookie: {cookie}
Content-Length: 941
client_id={Application (client) ID}
&scope=https://graph.microsoft.com/mail.read
&redirect_uri=http://localhost/myapp/
&grant_type=authorization_code
&client_secret={secret}
&code={code}
我使用微软提供的 Postman 示例来查找根本原因。