2

私の ASP.Net Core アプリでは、Microsoft 外部ログインを実装しました。https://localhost:5001/signin-microsoftもちろん、ローカルホストとそのポートで実行されている場合は、ドキュメントにリストされているデフォルトのログインコールバックをオーバーライドしたいと思います。ここの手順では、コールバックのオーバーライドは次のようになると述べていますhttps://contoso.azurewebsites.net/.auth/login/microsoftaccount/callback

コールバックが実装される場所について少し混乱しています。現時点ExternalLoginCallback()では、基本コントローラー クラスにコールバック メソッドを実装しています。しかし、上記の例を見ると、コントローラーの一部であるようには見えません。

コールバックStartup.csは、コントローラー、または現在認識していない他のファイル内にある必要がありますか?

4

1 に答える 1

3

ここの手順では、コールバックのオーバーライドが次のようになると述べています: https://contoso.azurewebsites.net/.auth/login/microsoftaccount/callback

これは、Azure App Serviceの組み込みの認証と承認のサポートに関連しています。Azure App Service でアプリをホストしていますか?

もし、そうなら :

Authentication and authorizationアプリ サービスの機能を有効にすると、Azureで組み込みの認証と承認のサポートを使用していることになります。この機能は、アプリケーションの認証と承認を引き継ぎます。つまり、アプリケーションの外部 Azure AD 認証コードを削除しても、認証と承認は引き続き機能します。次に、次のことができます。

  1. アプリ サービスの機能を使用Authentication and authorizationして、Owin Microsoft アカウント認証ミドルウェア関連のコードを削除します。

  2. Authentication and authorizationアプリ サービスの機能を無効にし、 Microsoft アカウントの外部ログイン( Microsoft.AspNetCore.Authentication.MicrosoftAccount パッケージ) を使用します。

いいえの場合:

次に、次のドキュメントに従う必要があります: Microsoft アカウントの外部ログイン。次の方法でコールバック URL を設定できます。

microsoftOptions.CallbackPath = "/home/about";

ただし、Microsoft アカウントの外部ログインで ASP.NET ID テンプレートを使用している場合は、. Microsoft 認証の後、asp.net はユーザーの ID がデータベースに存在するかどうかを確認します。ASP.NET Core 2.1 以降では、Razor クラス ライブラリとして ASP.NET Core Identity が提供されます。認証後にユーザーを別のページにリダイレクトする場合は、次のことができます。

  1. ASP.NET Core プロジェクトのスキャフォールド ID: https://docs.microsoft.com/en-us/aspnet/core/security/authentication/scaffold-identity?view=aspnetcore-2.2&tabs=visual-studio

  2. その後、次のリダイレクト URL を変更しAreas.Identity.Pages.Account.Login.cshtml.csます。

    public IActionResult OnPost(string provider, string returnUrl = null)
    {
        returnUrl = "/home/contact";
        // Request a redirect to the external login provider.
        var redirectUrl = Url.Page("./ExternalLogin", pageHandler: "Callback", values: new { returnUrl });
        var properties = _signInManager.ConfigureExternalAuthenticationProperties(provider, redirectUrl);
        return new ChallengeResult(provider, properties);
    }
    
于 2018-12-27T07:51:54.587 に答える