首页 > 解决方案 > AzureAD 使用自定义按钮单击

问题描述

您好,我正在尝试使用 azure 活动目录(Blazor 服务器应用程序)进行开发演示。

我的要求:

-> 单击按钮时,它应该重定向到https://login.microsoftonline.com/并且它应该对用户进行身份验证,然后它应该再次重定向到我当前的 blazor 应用程序索引 url。

但是在运行 blazor 应用程序后,它直接重定向到https://login.microsoftonline.com/并且在身份验证页面重定向到我的应用程序之后。

我的代码如下所示:

appSettings.json

{
   "AzureAd": {
   "Instance": "https://login.microsoftonline.com/",
   "Domain": "jpda.onmicrosoft.com",
   "TenantId": "aacd4f65-xxxx",
   "ClientId": "93134054-xxxx",
   "CallbackPath": "/signin-oidc",
   "ClientSecret": "I~Uoq5yxxxx"
},
  "Logging": {
  "LogLevel": {
  "Default": "Information",
  "Microsoft": "Warning",
  "Microsoft.Hosting.Lifetime": "Information"
 }
  },
 "AllowedHosts": "*"
}

登录显示.razor

<AuthorizeView>
<Authorized>
    Hello, @context.User.Identity.Name!
    <a href="MicrosoftIdentity/Account/SignOut">Log out</a>
</Authorized>
<NotAuthorized>
    <a href="MicrosoftIdentity/Account/SignIn">Log in</a>
</NotAuthorized>

索引.razor

@page "/"

<div class="top-row px-4 auth">
 @if (IsButtonClicked == true)
 {
    <LoginDisplay />
 }
 <a href="https://docs.microsoft.com/aspnet/" target="_blank">About</a>
 </div>
<h1>Hello, world!</h1>

Welcome to your new app.

<SurveyPrompt Title="How is Blazor working for you?" />

<button class="btn btn-primary" @onclick="(() => IsButtonClicked = true)">Login</button>

@code{ 
     [Parameter]
     public EventCallback<bool> OnButtonClicked { get; set; }
     public bool IsButtonClicked { get; set; }
  }

我打电话有条件地来自 index.razor 组件的组件,如果单击按钮然后它应该在身份验证页面上调用并重定向。

如果有人有想法请帮助我!提前致谢!

标签: c#azure-active-directoryblazorblazor-server-side

解决方案


  1. 当你去天蓝色的时候

    应用注册->新应用注册

    提供一些有效名称并选择有效租户选项后,您可以看到重定向 URI 选项。将 uri 放在那里很重要,因为一旦注册,您将不得不返回应用程序。url 取决于您的应用程序是什么以及它在本地驻留的位置。

    • 之后,当您进行身份验证时,您可以看到您提供的网址,您可以添加更多网址。

    在此处输入图像描述

2.打开startup.cs。必须有类似下面的内容(下面显示注释行)

在此处输入图像描述

  • 用下面的代码替换下面的代码代替 services.AddControllersWithViews(...) 以在单击登录按钮时重定向到 login.microsoftonline.com。

public void ConfigureServices(IServiceCollection services)
{
   //
   
   //
   services.AddAuthentication(AzureADDefaults.AuthenticationScheme)
                .AddAzureAD(options => Configuration.Bind("AzureAd", options));

    services.AddControllersWithViews()
        .AddMicrosoftIdentityUI();

    services.AddRazorPages();
    
    
    
    //

    
}

3.在 blazor 中,您可以打开index.razor ,打开终端窗口并添加以下 Library =>Microsoft.AspNetCore.Authorization
Code :

    > dotnet add package Microsoft.AspNetCore.Authorization

在此处输入图像描述

4.您可以打开 index.razor 并添加如下引用。(您可以为您喜欢的需要进行身份验证的视图执行此操作)

在此处输入图像描述

(如果您的应用有控制器,您也可以将 [Authorize] 属性添加到控制器中的索引操作,而不是在视图中给予授权)

参考:

  1. 重定向 URI(回复 URL)的限制和限制。
  2. 应用程序配置选项。
  3. 使用 Azure Active Directory 身份验证和 Microsoft Graph 构建 Blazor Web 应用。

推荐阅读