遵循以下步骤: 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。” :
我试图在Azure门户中设置一些重定向URL,包括:
sum(seq(col1,col2))
发布请求如下(使用nuget(asp.net核心2.2)中 System.Net.Http.HttpClient 类中的PostAsync方法):
我希望端点提供有效的响应。 如何将redirect_uri配置为有效?
编辑1
我修复了redirect_uri参数。
答案 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 示例来查找根本原因。