2016-04-26 24 views
-1

私は現在、紺碧のADログインとASP.NET MVCで私のウェブサイトを終了しています。Asp.net MVC紺碧の広告グループID

このウェブサイトでは、一部のページには管理者のみがアクセスできます。このために、私はtestAdminsという名前の新しいグループを作り、ユーザーがページにアクセスできる場合、私は確認したときに、私はこれを使用します。このグループにされ

ClaimsPrincipal principal = User as ClaimsPrincipal; 

if (principal.Claims.Any(x => x.Type == "groups" && x.Value == "id of testAdmins")){ //code } 

をそしてそれは私のユーザー魔女と罰金働いています。

しかし、testAdminsのIDを実際の管理者グループの値(Admins)に変更すると、サイトが展開されて魔法使いが使用されているときに使用されます。サーバーに何も表示されません40秒間、その後、私はこのメッセージを得た:

タイプの例外「System.Web.HttpExceptionは」 のSystem.Web.dllに発生したが、ユーザーコード

追加情報で処理されませんでしたができません。 SQL Serverデータベースに接続します。

誰かが私に何が起こっているか説明できますか?事前に

おかげ

PS:私は私のユーザーはそれが速く動作しますが、そうでないとき、それは2分かかり、エラーメッセージを行うグループである...など誰場合は、いくつかのより多くのテストを...作っどのような問題が起こっているのかわからない、Azure Active Directoryの特別なグループにいるユーザーとは異なるアクセスをする方法がありましたか?

答えて

0

スタックトレース全体と関連するソースコード行を提供します(完全なスタックトレースにはファイル名と行番号が含まれています)。あなたが直面している問題は、オンボードの開発者(ASP.NET 4.0以降の搭乗者)にとって非常に一般的です。

プロジェクトは、ASP.NET 4.0(またはそれ以降)用のデフォルトプロジェクトテンプレートに基づいています。このテンプレートは、デフォルトで「ローカルユーザーアカウント」でWebサイトを作成します。このテンプレートは、ユーザー認証/承認のためのEntity Framework dbコンテキストとローカルモデルを作成します。これはまた、あなたのweb.configにいくつかの設定を作成して、EFのconnectin文字列を定義します(またはデフォルトの文字列を指定します)。

このテンプレートの上に、右クリックメニュー(Azure AD認証の設定 - VS 2015で利用可能)またはNuGetパッケージの束を手動で含めることで、Azure AD認証の詳細を追加しました。こうして、あなたは(知らないうちに)ローカルアカウントによって指示されるFBA(フォームベース認証)と、Azure AD認証によって指示されるOpenID Connectの厄介な組み合わせを作りました。

SQL Serverエラーは、そのFBA(またはローカルユーザーアカウントの設定)の設定から発生します。それを取り除く簡単な方法はありません。

あなたはちょっと遊んでいて、テストしているので、新しいプロジェクトをやり直すことをお勧めします。ウィザードの2番目のステップに注意してください(VS 2013とVS 2015の両方で利用可能です)。 「変更の認証」をクリックし、「認証なし」を選んだん:(このクリーンプロジェクトで

enter image description here

を、あなたはAzureのAD認証を追加することができ、すべてが動作すると、あなたが任意のSQL Serverのエラーが表示されません、それだけでなくあなたのAzure AD Authを設定する方法に依存します - いくつかの魔法使い - つまり、マルチテナントのものもEFコンテキストを作成します)。

+0

本当に?あなたは本当ですか?なぜなら、もし私がグループに入っていればうまくいくからね。プリンシパル.Claims.Any(x => x.Type == "groups" && x.Value = = "testAdminsのID") 'が大きすぎますか? – MrPixel6

+0

ClaimsPricipalのClaimsプロパティは、OpenID Connect Owinミドルウェアによって初期化されるCollectionプロパティです。このプロパティをクエリすると、データベースにアクセスすることはできません。そして、それはタイムアウトを引き起こすほど大きくはありません。 ClaimsPrincipalとそのClaimsプロパティ、mrPixelに関するドキュメントを参照してください。また、JustDecompileを実行してClaimsPrincipal型を調べ、自分の目でDBへの呼び出しがないことを確認することもできます。 – astaykov

+0

ありがとう助けてくれてありがとう! – MrPixel6

関連する問題