私は、サービスを介してユーザーを認証する必要があるWebサイトで作業しています。 AuthorizeAttribute(User.Identitiesが設定されます)を使用すると、Windows認証が機能するようになりました。私の計画は、ユーザのロール/クレームを設定するカスタムミドルウェアを作成することですが、コンテキストはユーザがミドルウェアに設定されていません。 AuthorizeAttributeを追加しないコントローラーにUser.Identitiesも設定されません。Windows認証/承認
私の目標は、Windowsユーザ名を取得するミドルウェアを作成し、ユーザ名でサービスを呼び出して、ユーザがアクセスできるロールを取得し、ユーザのロールまたはクレームを設定することです。
public class RoleMiddleware
{
private readonly RequestDelegate _next;
public RoleMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task Invoke(HttpContext context)
{
if (!rolesSet)
{
var result = _service.GetRoles(context.User.Identity.Name);
//set roles
//set claims
}
await _next.Invoke(context);
}
}
ミドルウェアは、これを行うには、正しい場所でしょうし、私は、コントローラでAuthorizeAttributeを使用するときに私が行うのと同じ方法で、ユーザー名へのアクセスを得るために何をすべきかが必要ですか?
タスク Setup()はいつ呼び出されますか?私たちはWindows認証を使用しているので、ユーザーはどこにでもログインして、最初のリクエストで自分のクレームと役割を自分のサービスから設定することは望ましくありません。そのため、承認部分はドットネットコアドメイン内で処理することができます。 –
user568327