2017-05-18 8 views
0

私は過去3年間、フォーム認証メカニズムを使用していたMVCアプリケーション(.Net Framework 4.5)を持っています。このアプリケーションは、個人用、フリービー、エンタープライズなどのさまざまなアカウントを提供します。エンタープライズアカウントの場合は、同じアプリケーション内のすべてを処理しています。私。 「xyz」という名前のエンタープライズでアプリケーションを使用してエンタープライズアカウントが作成された場合、そのURLを「https://application/xyz/login」などのカスタムURLとして指定しています。エンタープライズアカウントを持つアプリケーションがサブドメイン(例:https://xyz.okta.com)として作成されているのを見て、このような実装を行った正確な理由はわかりません。クライアントはこのアプリケーションにOktaを統合するよう依頼しました。 私はOktaを調べ、SAMLがKentorIT Authservicesで行う正しい方法であることを発見しました。最初は、これをサンプルのMVCアプリケーションと統合することができました。認証部分は正常に動作していました。 SSOに関するいくつかの基本的な考え方で、私はkentor authsevicesを自分のアプリケーションに統合し始めました。IdP開始フロー - oktaアカウントを確認

1)エンタープライズアカウントの場合、Oktaの設定はエンタープライズごとに異なり、現在のアプリケーションの実装ではweb.configから設定することはできません。だからコードから設定しようとしましたが、置き換えてこれらの設定を統合することができましたConfiguration.Options.FromConfiguration;.データベースにすべての設定関連のもの(シングルサインオンURL、オーディエンスURI、IDプロバイダ発行者など)を保存する予定です私が望むたびに情報を得ることができるようになりました。「アイデンティティプロバイダ発行者IDは各Oktaアカウントに対して一意です」IdPが開始したフローで、ユーザーがアプリケーションにアクセスしようとするとAuthServices \ Acsアクションにリダイレクトされます(IDプロバイダ発行者のような)Oktaアカウントの呼び出しがあったかどうかを確認する方法はありますか?現在、「IDプロバイダ発行者」を設定していますが、 (そして、oktaアカウントで一意でなければならないと思う)をGeneral SAML settingsタブのDefault RelayStateフィールドに入力して、AuthServices \ Acsアクションメソッドから取得することができました。それはいいアイデアのようですか?ご意見をお聞かせください。

2)エンタープライズアカウントは、ライセンス数(たとえば50)に基づいて制限されています。エンタープライズOkta管理者が故意に55人のユーザーを追加した場合、そのユーザーはすべてデフォルト設定に基づいてアプリケーションを正常に認証できます。このシナリオを処理できる方法はありますか?特定のエンタープライズアカウントに登録されているユーザーの一覧を記録する必要がありますか?

3)私は、Kentor認証サービスは認証と認可のためのものであり、アプリケーション自体から行う必要があることを理解しています。現在のアプリケーション実装は、データベースに格納されているユーザー権限をチェックするカスタム認可属性で構成されています。そのままにしておく必要があり、データベースの権限に基づいて承認を行う必要があります。右?

あなたの貴重な提案を期待し、私が間違っている場合は私を修正してください。前もって感謝します。

答えて

3
  1. 機密データの暗号化に署名しない限り、RelayStateは使用しないでください。 POSTバインディングを使用しているときは、シグネチャによって保護されていないため、ユーザーが操作できます。発行idpを取得するには、代わりにAuthServicesによって生成されたクレームの発行者フィールドを確認します。

  2. はい。

  3. はい、それはKentor.AuthServiesの考えです。SA​​ML2認証を.NETのセキュリティモデルにプラグインして、現在の/従来の認証設定を使用できるようにします。

関連する問題