将Azure Active Directory身份验证添加到Blazor WebAssembly应用

7eumitmz  于 2023-01-14  发布在  其他
关注(0)|答案(1)|浏览(149)

我有一个现有的Blazor Web Assembly应用程序,我正在尝试实现Azure AD身份验证,以便只有使用工作帐户登录的用户才能访问该Web应用程序。
我正在尝试跟踪Microsoft guide。我已经安装了Microsoft.Authentication.WebAssembly.Msal nuget包,但是在我的Program.cs中,我收到了以下错误:

IServiceCollection does not contain a definition for AddMsalAuthentication.

对于以下代码块:

builder.Services.AddMsalAuthentication(options =>
    {
        builder.Configuration.Bind("AzureAd", options.ProviderOptions.Authentication);
    });

关于为什么以及如何解决这个问题,有什么建议吗?

cygmwpex

cygmwpex1#

在Visual Studio中,创建了Blazor WebAssembly App

Program.cs文件中,添加了您提到的代码。

builder.Services.AddMsalAuthentication(options =>
{
    builder.Configuration.Bind("AzureAd", options.ProviderOptions.Authentication);
});

一开始连我也犯了同样的错误。

BlazorApp1.Server应用程序中,已安装Microsoft.Authentication.WebAssembly.Msal NuGet程序包。

<PackageReference Include="Microsoft.Authentication.WebAssembly.Msal" Version="7.0.2" />
  • 现在,我可以构建应用程序,没有任何问题。
    我的BlazorApp1.Server .csproj文件:
<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>net7.0</TargetFramework>
    <Nullable>enable</Nullable>
    <ImplicitUsings>enable</ImplicitUsings>
    <UserSecretsId>BlazorApp1.Server-****</UserSecretsId>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="7.0.0" />
    <PackageReference Include="Microsoft.Authentication.WebAssembly.Msal" Version="7.0.2" />
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\Client\BlazorApp1.Client.csproj" />
    <ProjectReference Include="..\Shared\BlazorApp1.Shared.csproj" />
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="7.0.0" />
    <PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="7.0.0" />
    <PackageReference Include="Microsoft.AspNetCore.Identity.UI" Version="7.0.0" />
    <PackageReference Include="Microsoft.AspNetCore.ApiAuthorization.IdentityServer" Version="7.0.0" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="7.0.0" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="7.0.0" />
  </ItemGroup>
</Project>

我的文件夹结构:

  • 由于有两个Program.cs文件(Client/Server),请确保您已经在要添加代码的应用程序中安装了该包。

相关问题