6

Dotnet Core MVC AppでOpenID Connectを使用してユーザーが認証されたら、コードを実行する最善の方法を見つけようとしています。ログイン後にリダイレクトURLをハードコードする必要はありません。なぜなら、認証後にどこに到達しようとしているのかがまだ分かっているからです。私はちょうどコードを実行する必要があります。 "最初にログインしてフラグを設定するかどうかを確認する"などの方法があります。openidの後にコードを実行するAsp.net Coreでサインインを接続する

私はミドルウェアを使用していましたが、これはすべてのリクエストで呼び出されていくつかの問題を引き起こしたためです。

誰でもこれを達成するためのアイデアはありますか?

+0

これはどうやって行ったのですか?私はまったく同じ要件を持っていますが、適切なソルートまだイオン。同様の[質問](https://stackoverflow.com/questions/45618386/how-to-redirect-after-azure-ad-authentication-to-different-controller-action-in)を投稿しました – OjM

+0

どのように問題?私はまったく同じ問題を抱えています。 – TejSoft

+0

apiトークンを生成するメソッドが必要です。認証プロセスが完了し、AccountNeverLoggedInのようなユーザーテーブルにフラグが設定されていれば、そのメソッドを呼び出すだけです –

答えて

0

このタイプの選択的再ルーティングは、AuthorizeAttributeを継承するクラス内で実行する必要があります。追加の役割コンテキストを適用することを含め、多くのプリアンブルアクションをそこで実行できます。

1つの例として、利用規約を読み、同意することが挙げられます。これは、ログイン資格情報(ユーザーを読む)に対して一度実行する必要があります。これは、役割のより小さい保護されたMVCコントローラへのリダイレクトによって実行できます。いったん受け入れられた役割 "TandC_Consent"(またはその他の役割)をユーザに適用することができ、ユーザはその後毎回[AuthorizePermission("TandC_Consent")]を使用して検証するコントローラにリダイレクトすることができる。

This github exampleは、AuthorizeAttributeインスタンスと[AuthorizePermission()]デコレータの実装方法を示しています。

0

私もそれを行う方法を探していましたが、最終的に私はIdentityServer3を使用しました。オーバーロードできるメソッドを定義するIUserServiceインターフェイスがあります。これらの方法の一つは、IdentityServer3ドキュメントからPostAuthenticateAsync次のとおりです。

ユーザーが を正常に認証された後、彼らは、クライアントアプリケーションに返される前に、このメソッドが呼び出されます。 他のすべての認証方法の後に、統合された場所でカスタムユーザーワークフローを確認することができます。 UIワークフロー用に設計されています。 SignInMessage: PostAuthenticationContextに以下のプロパティを渡しました。 AuthenticateResult:現在のAuthenticateResultです。ユーザサービス は、ヌル以外の値に再割り当てして、認証 の結果を変更することができます。

public override Task PostAuthenticateAsync(PostAuthenticationContext context) 
{ 
    // code that will determine target url 
    // redirectPath = ... 
    context.AuthenticateResult = AuthenticateResult(redirectPath, claims); 
} 

redirectPathが始まらなければなりません/または〜/」ここ

IUSerService実装のexampleです:

contextパラメータには、カスタム認証結果に設定することができAuthenticateResult性質を有しています。

関連する問題