【发布时间】:2022-01-26 17:59:01
【问题描述】:
我是 Blazor 和 Azure Ad 的新手(或者实际上是生成身份验证),我想从 Visual Studio 2022 中的向导生成的应用程序中设置一个简单的基本应用程序。我能够完成身份验证部分并运行,但我无法访问 API。我收到 401 - 响应标头中的未经授权和 www-authenticate 是:Bearer error="invalid_token", error_description="签名无效"
这是我所做的:
- 在 Visual Studio 2022 中,使用 Blazor WebAssembly 应用创建一个新项目
- 将框架保持为 .Net 6.0(长期支持)
- 将身份验证类型更改为 Microsoft 身份平台
- 保持“为 HTTPS 配置”开启
- 选中“ASP.Net Core 托管”
- 关闭“渐进式 Web 应用程序”
- 我确认我要通过单击完成按钮安装“dotnet msidentity 工具”
- 在 Azure “应用注册”部分,我选择顶部的“新注册”
- 我输入“MyBlazorApp1”作为名称
- 为支持的类型选择“仅限个人 Microsoft 帐户”
- 将重定向 URI 设置为 SPA 和
https://localhost:7095/authentication/login-callback - 点击左下角注册按钮
- Screen capture of the filled fields
- Screen capture of the created AzureAd application
- 在 BlazorApp1.Client/wwwroot/appsettings.json 中:
- 将 22222222-2222-2222-2222-222222222222 替换为消费者(因此授权现在为 https://login.microsoftonline.com/consumers)
- 将 ClientId 设置为客户端 ID(在上面的屏幕截图中为 1)
- 在 BlazorApp1.Server/appsettings.json 中:
- 将域设置为“主域”,找到“Azure Active Directory”概述页面。
- 将 TenantId 设置为租户 ID(以上屏幕截图中的 3)
- 将客户端 ID 设置为客户端 ID(以上屏幕截图中的 1)
- 执行应用程序 (Ctrl-F5)
- 使用屏幕右上角的登录,一切正常!
- 进入左侧的获取数据,我收到“发生未处理的错误。屏幕底部的“重新加载”。
- 在 Azure 上,在之前创建的应用程序的“公开 API”部分中,单击“添加范围”
- 我接受由客户端 ID 生成的默认应用程序 ID URI,点击“保存并继续”
- 将范围名称设置为“access_as_user”
- 将用户常量显示名称设置为“以用户身份访问”
- 将用户同意描述设置为“作为用户描述访问”
- 保持状态为已启用
- 然后点击“添加范围”
- Screen capture of the fields to create the scope
- 在 BlazorApp1.Client/Program.cs 中:
- 将“api://api.id.uri/access_as_user”更改为 api://Client ID/access_as_user(以上屏幕截图中的 4)
- 登录,进入左侧的获取数据部分,仍然出现未处理错误。重新加载”在屏幕底部。查看 Edge DevTools 的 Network 部分,我可以看到:
- WeatherForecast 返回 401
- 响应头中的www-authenticate为:Bearer error="invalid_token", error_description="签名无效"
- DevTools screen capture
我觉得我错过了一些你们可能会发现很明显的东西,但这是我第一次使用 AzureAd 的 Blazor 我必须承认我不确定在哪里继续搜索......
谢谢!
【问题讨论】:
标签: api azure-active-directory blazor webassembly visual-studio-2022