問題タブ [iprincipal]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mocking - モックIIdentityとIPrincipal
単体テストでこれらのオブジェクトを提供するためのより良いアプローチは何かを尋ねたいだけです。
私の単体テストでは、CSLAオブジェクトをテストしています。CSLAオブジェクトは、内部でApplicationUserオブジェクトの1つのプロパティと1つのメソッドを使用しています。ApplicationUserはIPrincipalから継承されます。プロパティは次のとおりです。1)ApplicationContext.User.IsInRole(...)-メソッドはIPrincipalの一部です2)ApplicationContext.User.Identity.Name-名前はApplicationUserの一部であるIIdentityのプロパティです別名IPricipal
私のテストの例(RhinoMockを使用):
2番目の値であるID名に少し問題があります。私はそれをモックしようとしましたが、内部で行われるため、モックされたIIdentityをApplicationUserに割り当てるのに問題があります。IIPrincipal(IIdentityを含む)を自分で作成するだけで、モックを作成しないように言われました。これは確かに行うことができます。これを使用してスタブとして呼び出すことができるかどうかわかりませんか?
では、IPrincipalとIIdentityの扱い方を教えていただけますか?どんな提案でも大歓迎です。
c# - WindowsPrincipal.IsInRole() が期待される結果を返さない
だからここに私の現在のコードがあります:
これは数か月前に誰かによって行われましたが、なぜ機能しないのか理解できません。同社は最近、あるドメイン名から別のドメイン名に移動したばかりです。そのため、p.IsInRole("String") 関数が使用するドメイン コントローラーに興味がありました。コンピューターが使用しているものは何でも、デフォルトの DC を使用すると想定しています。
奇妙な点は、これが実行されているオフィス内のコンピューターが 2 つの別々のドメインにある可能性があることです。オブジェクトではList<string>
、両方のドメインが可能です。そのため、「domainA\groupA」、「domainA\userB」、「domainB\groupC」、「domainB\userD」などの項目が含まれる可能性があります。
したがって、私の主な問題は、IsInRole 関数が決して true を返さないことです。私はそれが必要であることを知っています.domainA\Domainユーザーでテストしても、falseが返されます.
何か案は?コードを変更することは可能ですが、望ましくありません。私は100%ではありませんが、コンパイルすることさえできます...
openid - ユーザー ID をプリンシパルまたは ID に保存しますか? ASP.Net/OpenID
フォーム認証を使用する ASP.Net MVC Web アプリケーションがあります。認証に OpenID を使用しています。
現時点では、openID url をName
標準の .xml 内に保存していますGenericIdentity
。また、ユーザーのデータベース ID に簡単にアクセスできるようにしたいと考えています。
関数をオーバーライドすることで、カスタム プロバイダーまたは ID を作成できApplication_AuthenticateRequest
ます。
私の質問は、ユーザーのデータベース uid をプリンシパルまたは ID に入れるべきですか?
ID の Name プロパティは、openid url (ユーザーはこれらの多くを持つことができますが、すべてのページに表示したい) またはデータベース uid である必要がありますか?
asp.net - ASP.NET MVC - カスタム IIdentity または IPrincipal を設定する
かなり単純なことを行う必要があります。ASP.NET MVC アプリケーションで、カスタム IIdentity / IPrincipal を設定したいと考えています。どちらが簡単/より適しています。のようなものを呼び出すことができるように、デフォルトを拡張したいと思いUser.Identity.Id
ますUser.Identity.Role
。派手なものはなく、いくつかの追加のプロパティです。
たくさんの記事や質問を読みましたが、実際よりも難しくしているように感じます. 簡単だと思いました。ユーザーがログオンする場合、カスタム IIdentity を設定したいと考えています。それでApplication_PostAuthenticateRequest
、global.asax に実装しようと思いました。ただし、それはすべての要求で呼び出され、データベースからすべてのデータを要求してカスタム IPrincipal オブジェクトを配置するすべての要求でデータベースへの呼び出しを行いたくありません。それも非常に不必要で、遅く、間違った場所 (そこでデータベース呼び出しを行う) にあるように見えますが、私は間違っている可能性があります。または、そのデータはどこから来るのでしょうか?
そこで、ユーザーがログインするたびに、必要な変数をセッションに追加し、Application_PostAuthenticateRequest
イベント ハンドラーのカスタム IIdentity に追加できると考えました。しかし、私Context.Session
はnull
そこにいるので、それも仕方ありません。
私はこれに1日取り組んできましたが、何かが足りないと感じています。これは難しいことではありませんよね?また、これに付属するすべての (半) 関連のものに少し混乱しています。MembershipProvider
, MembershipUser
, RoleProvider
, ProfileProvider
, IPrincipal
, .... このすべてが非常に混乱していると思うのIIdentity
はFormsAuthentication
私だけですか?
余分なデータを IIdentity に保存するためのシンプルでエレガントで効率的なソリューションを誰かが教えてくれたら、それは素晴らしいことです! SO にも同様の質問があることは知っていますが、必要な答えがそこにある場合は、見落としていたに違いありません。
serialization - ASP.NET でユーザーが拒否されると、'CustomIdentity' で SerializationException が発生する
既存のデータベースの上に ASP.NET の認証と承認を実装しようとしています。データを取得するために Web サービスを呼び出す Web サイトがあります。Web サービスを使用するには、ユーザー名とパスワードを入力する必要があります。そのことを踏まえて、IIdentity と IPrincipal を実装して、暗号化されたパスワードを保存し、Web サービス呼び出しの実行時にそれを提供できるようにすることにしました。将来的には、asp.net の組み込みセキュリティをさらに使用する可能性があるため、メンバーシップとロール プロバイダーを実装し、必要なもの (ValidateUser と GetRoles) だけをオーバーライドします。ただし、メンバーシップ プロバイダーのおかげでユーザーを検証した後実装 必要に応じてパスワードを取得できるように、独自の CustomIdentity を Context.User に設定しています。
ユーザーがページへのアクセスを許可されている限り、完全に機能しています。ただし、ユーザーが拒否されると、AccessDeniedException をスローする代わりに、フレームワークは CustomIdentity でシリアライゼーション例外をスローします。このリンク に詳細が記載されている完全に類似した動作を見つけましたが、回答は投稿されていません。
私の例外は、上記のリンクとまったく同じです
メンバーシップとカスタム IIdentity および IPrincipal を同時に使用することは正しいですか? そうでない場合、メンバーシップ プロバイダーとロール プロバイダーを使用する場合、パスワードやその他のユーザーデータなどのプロパティをどこに追加すればよいですか?
よろしくお願いします、
ステファン・エルブレック
asp.net - ASP.netWebサービス
ログイン中にThread.CurrentPrincipalオブジェクトを設定するWebサービスを使用していますが、すぐに同じWebサービスの別のWebメソッドがその異なる/リセットであるThread.CurrentPrincipalにアクセスします。
これが予想されるかどうか、または同じクライアントからの異なるWebメソッド呼び出しが同じThread.CurrentPrincipalオブジェクトにアクセスできるかどうかを誰かに教えてもらえますか?
ありがとう
.net - Asp.NET プリンシパル WebORB HttpHandler
Flex-WebORB-Asp.NET アプリケーションがあります。ログインすると、WebORB インターフェイスを実装する AuthenticationHandler があります。
そこで、プリンシパルを作成して返します。WebORB はプリンシパルを使用して、リモート メソッド呼び出しの認証と承認をチェックします。
さて、この時点で、何が何でHttpContext.Current.User.Identity
あるかを確認すると、それは WindowsIdentity です。
ここまでは順調ですね。後で WebORB を介してリモート呼び出しが行われると、次のように呼び出して、ログインしているユーザーの ID を取得します。
したがって、WebORB は、リモート呼び出しごとにスレッドの ID が設定されていることを確認していると思います。
問題は、(画像を取得するために) HttpHandler を呼び出すときに、ログインしているユーザーの ID も で取得しようとしましたThread.CurrentPrincipal.Identity.Name
が、うまくいかないことです。おそらく、HttpHandler では WebORB が動作しないためです。
どちらの場合も同じ方法でログインしているユーザーの ID を取得できるように、これをどのように解決しますか? セッションオブジェクトに入れますか?を変更できますHttpContext.Current.User.Identity
か? HttpContext.Current.User.Identity
は と同じであってはなりませんThread.CurrentPrincipal.Identity.Name
か?
ps: ユーザーは Active Directory にありません。
asp.net - asp.netのHttpContext.Current.UserとThread.CurrentPrincipalの違いは何ですか?
なるほど、タイトルはわかりやすいと思います。