アカウントのログインにドメイン制約を追加するためにカスタムOAuthAuthorizationServerProvider
を実装しました。すべてが良かった。しかし、ユーザーがトークンを取得すると、必要なシステムにそのトークンを使用できるという問題がありました。例:マルチテナントASP.NET IDのトークンの再検証方法?
TokenEndpointPath
は適切なユーザー名とパスワード(テナント1の管理者アカウントと仮定します):http://localhost:40721/api/v1/account/authを要求し、ベアラトークンを受け取ります。
これは、テナント0のhttp://localhost:40720/api/v1/info/adminにアクセスするために使用されます。リクエストは承認済みと見なされます。
私はCreateProperties
方法を変更しようとしたが、それは助けていませんでした:
public static AuthenticationProperties CreateProperties(string userName)
{
var tenant = DependencyUtils.Resolve<IdentityTenant>();
IDictionary<string, string> data = new Dictionary<string, string>
{
{ "userName", userName },
{ "tenantId", tenant.Tenant.Id.ToString() },
};
return new AuthenticationProperties(data);
}
私もValidateAuthorizeRequest
を上書きしようとしたが、それは私のデバッグに呼び出されることはありません。
どこでも小切手を実装する必要があるので、トークンはドメイン/正しいテナントにのみ有効ですか?
(注:テナントには複数のドメインがある可能性があるので、ドメインにこだわるのではなく、正しいテナントに対してアカウントのチェックを手動で行うことは可能ですが、できればプラスです