如何解决“ AADSTS90102:'redirect_uri'值必须是有效的绝对Uri。” Microsoft Graph中的错误

时间:2019-09-04 13:32:58

标签: asp.net-core azure-active-directory microsoft-graph dotnet-httpclient refresh-token

遵循以下步骤: 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 类中的PostAsync方法,我可以通过以下错误获得响应:” AADSTS90102:“ redirect_uri”值必须是有效的绝对Uri。” https://i.imgur.com/LhP5kYf.png

我试图在Azure门户中设置一些重定向URL,包括: sum(seq(col1,col2))

发布请求如下(使用nuget(asp.net核心2.2)中 System.Net.Http.HttpClient 类中的PostAsync方法): https://i.imgur.com/PI4mo8Y.png

以下是从Azure门户中注册的应用程序配置的重定向URL: https://i.imgur.com/aqYDJhn.png

我希望端点提供有效的响应。 如何将redirect_uri配置为有效?

编辑1

我修复了redirect_uri参数。

3 个答案:

答案 0 :(得分:2)

您似乎在混合授权和令牌端点。

如果您希望用户进行身份验证,则必须将用户重定向到该URL,而不是向其发送POST请求。 用户返回您的应用后,您需要将授权代码交换为令牌。 文档: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

答案 1 :(得分:1)

从屏幕快照看来,URLEncoding不正确。路径中的'/'字符应编码为%2F,而代码中则包含%2。 (在“ .com”之后和“配置”之前。)

您还考虑过SDK中的授权提供程序吗? https://docs.microsoft.com/en-us/graph/sdks/choose-authentication-providers?tabs=CS#AuthCodeProvider

答案 2 :(得分:0)

我收到了这个错误,对我来说问题是我正在对 redirect_uri 端点的 post 请求中的 /oauth2/v2.0/token 值进行编码。请注意 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}

我使用 Microsoft 提供的 Postman 示例来查找根本原因。

https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-auth-code-flow#request-an-access-token