問題タブ [thinktecture-ident-model]
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.
asp.net-web-api - メッセージハンドラーからコントローラー/アクション属性にアクセスすることは可能ですか?
メッセージハンドラー/DelegatingHandlerからコントローラーまたはアクションを装飾する属性にアクセスする実用的な方法はありますか?
Pedro Felixのブログエントリの図から、メッセージハンドラーはパイプラインの初期段階にあり、コントローラーディスパッチャーメッセージハンドラーが実行されるまで情報は利用できないようです。正しい?
私のユースケースについて: Thinktecture IDモデルを使用しているので、で属性
を検索できると便利です。 AllowAnonymous
AuthenticationHandler
claims-based-identity - Thinktecture.IdentityServer.45 を使用してトークンで複数の ID を返すにはどうすればよいですか?
Thinktecture.IdentityModel.45ライブラリでは、次のようなものを実行して取得できますMicrosoft.IdentityModel.Claims.ClaimsIdentityCollection
。
ユーザーがログインして、所属する組織のコンテキストを選択するシステムがあります。各コンテキストは、トークンで使用できるものを表す必要があります (特定のクレームのコレクションを持つ組織ごとに 1 つの ID)。Thinktecture.IdentityServer.45が複数の ID を含むトークンを返すようにするにはどうすればよいですか?
asp.net-web-api - Thinktecture.IdentityModelを使用したAsp.netWebapiCORS
このURLhttp ://brockallen.com/2012/06/28/cors-support-in-webapi-mvc-and-iis-with-で説明されているように、Thinktecture.IdentitymodelでAsp.netWebapiCORSの問題を解決することを検討しています。 thinktecture-identitymodel /
.Net 4.5でVS2012を使用しています。ここで、いくつかの問題が発生しています。
1)これは私がリクエストをしたときに遭遇するエラーです
配列と互換性のないタイプとして要素にアクセスしようとしました現在のWeb要求の実行中に、未処理の例外が発生しました。エラーとエラーがコードのどこで発生したかについての詳細は、スタックトレースを確認してください。System.ArrayTypeMismatchException:配列と互換性のないタイプとして要素にアクセスしようとしました。
[ArrayTypeMismatchException:配列と互換性のないタイプとして要素にアクセスしようとしました。]
System.Collections.Generic.List`1.Insert(Int32 index、T item)+62
Galaxy.CorsConfig.RegisterCors(HttpConfiguration config) +99Galaxy
。 WebApiApplication.Application_Start()+377[HttpException(0x80004005):配列と互換性のないタイプとして要素にアクセスしようとしました。]
System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context、HttpApplication app)+12864673
System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext、HttpContext context、 MethodInfo []ハンドラー)+175
System.Web.HttpApplication.InitSpecial(HttpApplicationState状態、MethodInfo []ハンドラー、IntPtr appContext、HttpContextコンテキスト)+304
System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext、HttpContextコンテキスト)+404
System.Web .Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext)+475[HttpException(0x80004005):配列と互換性のないタイプとして要素にアクセスしようとしました。]
System.Web.HttpRuntime.FirstRequestInit(HttpContext context)+12881540 System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context)+159System.Web。 HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr、HttpContext context)+12722601
私のアプリケーションプールはMicrosoft.NETFrameworkバージョン:4.0.30319を指しています。ASP.NETバージョン:4.0.30319.17929
2)私の2番目の質問は、WebApiで言及されていることを行った後です。IIS用のHTTPmoduleを追加する必要がありますか?
これを実行するのは非常に簡単なはずです。ここで何が欠けているのかわかりません。どんなポインタでも大歓迎です。
ありがとう。
wif - アプリケーション構成に基づいて tt.idm 経由で SAML2 トークンを受け入れる方法
さて、私は Thinktecture IdentityModel 4.0 (tt.idm) を使用して、WebAPI 経由で着信 SAML2 セキュリティ トークンを受け入れ、それらを ClaimsPrincipals に変換しています。そして、tt.idm に付属のサンプルに基づいて、期待どおりに動作するプロジェクトがあります。
唯一の問題は、すべてのサンプル (ひいては私のプロジェクト) がハードコードされた SecurityTokenHandlerConfiguration オブジェクトを使用していることです。この設定を WIF 構成で使用したいと考えています。
だから、私は現在、次のようなものを持っています:
しかし、これらの値を自分の構成からロードしたいと思います - 自動的に、microsoft.identityModel 構成セクションをロードすることによって、または... 意味のあるものは何でも。
ただし、これまでのところ何も機能していません。たとえば、ConfigurationBasedIssuerNameRegistry を新しくするだけで、空の IssuerNameRegistry が生成されます。そして、microsoft.identityModel 構成セクションを読み込むと、基本的にプロパティのない構成セクションが生成されます。
現在の構成からロードするように tt.idm に指示する方法はありますか? またはWIFに伝える方法は?
どのように進めればよいですか?oO
asp.net - SimpleMembershipを使用したThinktecture.IdentityModel
ASP.NET SimpleMembershipを使用して、WebAPIを使用するユーザーを認証したいと思います。Thinktectureには、Thinktecture.IdentityModel(http://thinktecture.github.com/Thinktecture.IdentityModel.45/)と呼ばれるすばらしい認証ライブラリがあり、FormsAuthとBasicAuth(ソース)を結び付ける例があります。ただし、この例では、ASP.NETメンバーシッププロバイダーがないと機能しないMembership.ValidateUser()を使用しています。これは、SimpleMembership(ソース)ではサポートされていません(編集:これは完全には当てはまりません。以下のMarkの回答を参照してください)。
編集:
これが私がしたことです:
1)新しいMVCインターネットアプリケーションを作成します
2)NuGetを介してThinktecture.IdentityModelをインストールします
3)スキャフォールディングを介してモデルとAPIコントローラーを作成します。
4)プロジェクトを実行し、新しいユーザーを作成し、Fiddlerを使用して新しいGooberを作成しました
5)GetGoober(int id)に[Authorize]を追加しました
6)WebApiConfig.csに追加:
プロジェクトを実行し、Fiddlerでapi / goober / 1を押すと、401 www-Authenticate:unspecificedが表示されます。しかし、最初にAccountControllerを使用してログインし、次にFiddlerを使用すると、200が得られ、すべてが桃色になります。
編集
さて、問題は私の最初の質問とは関係がないと思います。テンプレートのSimpleMembershipの初期化に関連しているのではないかと思います。プロジェクトを開いてデバッグを実行し、FiddlerでAPIをヒットすると、Authを通過できません。しかし、Webフロントエンドの「登録」リンクをクリックするだけで、Authを通過します。これは、InitializeSimpleMembershipAttributeがAccountControllerで呼び出されるため、コントローラーが呼び出されるまで初期化されないためだと思いますか?
Membership.ValidateUser()の代わりにWebSecurity.Login()を使用しようとしましたが、機能しません。
これを実際に実装する方法に迷っています。誰かアドバイスはありますか?それとも、私はこの問題に間違った角度から取り組んでいるのでしょうか?
api - シンプルな Web トークンを使用して REST API にアクセスする
Asp.Net Web.Api を使用して REST API を作成しました。
ThinkTecture の Identity Server を使用して保護されています。
ユーザーがユーザー名とパスワードを入力できるようにする単純なコンソールクライアントを作成しました。次に、クライアントはこれらの資格情報を使用して Identity Server に対して認証し、成功時にトークンを取得し、トークンを残りの API に渡し、API によって認証され、API からデータを取得します。
これで、API を使用する MVC サイトを作成できました。よくわからないのは、トークンを取得するためのユーザー名とパスワードがない場合に API を照会する方法です。APIを呼び出すたびにユーザーにログインさせたくないのは明らかです。認証 Cookie の設定に似たようなことはできますか?
asp.net-web-api - Asp.Net WebAPI で Oauth2 トークンを使用して承認する
こんにちは、ASP.Net WebApi を構築しています。最初に、基本認証の .net メンバーシップ プロバイダーとThinktecture Identitymodelを使用して、WebApi を承認しました。
これ以上簡単にすることはできなかったと思います。
さらに一歩進めるために、 oauth2 トークンを提供するThinktecture IdentityServerをセットアップしました。私の質問は、クライアントから送信されたアクセス トークン (WebApi) を ID サーバーで検証するにはどうすればよいですか?
IdentityModel が提供するAddJsonWebTokenメソッドを調べてきましたが、 identityserver のどの uri (エンドポイント) を呼び出してトークンを検証する必要があるのか わかりません。おそらく、私はここで完全に迷っており、ポイントを逃しています。どんな助けも大いに感謝します!
要約する:
WebApi で受け取った access_tokens を検証する方法と、それを [Authorize] 属性に接続する方法を教えてください。
wcf - WCF サービス リファレンスを使用してクライアントで IssuedToken を使用する方法
WS2007FederationHttpBinding を使用する WCF サービスから生成されたサービス参照を持つ WinForms アプリがあります。以下が機能しない理由がわかりません。
私の WinForms アプリは、BearerKey タイプのトークンを処理するように設定された Thinktecture.IdentityServer を使用する WCF サービスを呼び出しています。
クライアントから有効なアクセス トークンを取得し、次の呼び出しを行います。
サービス参照用の winforms クライアント app.config は次のとおりです。
サービス呼び出し (svcRef.GetClaims()) を実行しようとすると、次のエラーが発生します。
「セキュリティ トークン発行者のアドレスが指定されていません。ターゲット ' https://identity.MyCo.com/issue/wsfed 'のバインディングで明示的な発行者アドレスを指定する必要があります。または、資格情報でローカル発行者アドレスを構成する必要があります。 ."
このエラーは不完全で紛らわしいですが、設定で発行者が指定されているようです!
最後に、WCF サービスと Identity サービスが有効であることはわかっています。これは、カスタム ChannelFactory を使用してすべて正常に機能し、トークンを適用するのとまったく同じ方法を使用しているためです。
var channel = factory.CreateChannelWithIssuedToken(token);
しかし、私の要件は、生成された ServiceReference を使用することです。:(
c# - Web API SessionToken に保存されている ClaimsIdentity クレームを期限切れ/更新する方法
モバイル デバイスや Web クライアントから消費される ASP.NET Web API プロジェクトで認証/承認を実行するために、優れた Thinktecture.IdentityModel ライブラリを使用しています。基本認証を使用してモバイル クライアントを認証し、Web API にアクセスし、Thinktecture.IdentityModel が提供する組み込みの SessionToken 生成を利用しています。ただし、ClaimsIdentity クレーム コレクションに追加されたクレームを取り消す方法については、いくつかの懸念があります。これは、クライアントに提供される SessionToken にエンコードされます (と思います)。
これが私がこれまでに持っているものです:
IdentityModel サンプル プロジェクトの例に従って、次のクラスを作成しました。
私の Global.asax クラスから呼び出されます
モバイル デバイスは、個人からユーザー名とパスワードを収集し、認証ヘッダーを適切に設定して、必要な Web エンドポイントに資格情報を提供します。http://myhost/api/Authenticate
サーバーでは、私の Membership.ValidatUser がユーザー名/パスワードで呼び出され、検証された場合は、の Authenticate メソッドMyClaimsTransformer
が呼び出されます。
その後、モバイル クライアントはトークンを受け取ります。このトークンは、後続の要求の認証ヘッダーで渡すことができます。
これはすべてうまくいきます。
ここでやりたいことは、ClaimsTransformer に、次の疑似コードのようなコードを追加することです。
私の希望は、データベースから特定のユーザーのロールまたは権限のリストを要求する必要がある回数を制限し、カスタム AuthorizeAttribute でこれらのロール/権限をチェックするのを便利にすることでした。
ただし、これを追加し始めたとき、ユーザーがログインしてこのトークンを受け取ったシナリオを考え始めましたが、システムの別のユーザーによる何らかのアクションにより、ロールが変更または取り消された可能性があります。最初のユーザーは、期限切れになったロール/権限のリストを含むこのトークンを引き続き保持し、トークンの期限が切れるまでは何にでもアクセスできます。または、何かへの新しいアクセス権が与えられますが、何らかの方法でログアウトするまで実際にはそのアクセス権を受け取りません。
この方法で作成された SessionToken を無効にするメカニズムはありますか? または、ユーザーの役割/権限に変更が加えられたことを知る方法を見つけた場合、クレームを変更して SessionToken をシームレスに再発行するにはどうすればよいでしょうか?
また、SessionToken を完全に取り消すにはどうすればよいですか。つまり、ユーザーを「ログアウト」したい場合、どのように機能しますか?
c# - ThinkTecture ID モデル トークンに基づいてユーザーを取得
Thinktecture の甘い Indentity Model ライブラリを使用しています。私は高くも低くも見えましたが、おそらくばかげた質問をしようとしています。基本的に、ASP.net Web API 機能を追加する Web フォーム アプリケーションがあります。Identity コード サンプルをインストールし、セッション トークンで動作させるために必要だと思われるものを集めました。トークンを取得して、今後の呼び出しで送り返すことはできますが、API コントローラーではユーザー オブジェクトが設定されていないようです。提供された場合、フレームワークがトークンを照会し、トークン データに基づいてプリンシパルを自動的に設定し、プリンシパルを認証済みとしてマークすると想定していましたか? これは無効な仮定であり、自分で設定しなければならないものですか?
基本的に、承認と認証にトークンを使用していますが、追加のビジネス ルールのためにトークン/セッションから UserID を引き出す必要があります。
繰り返しますが、ばかげた質問があれば、遠慮なく私を悩ませてください。推奨事項に影響がある場合は、単体テストを使用してテストしています。
単体テストのコード: 1) トークンを取得し、ビジネス ロジックを使用してユーザーを正常に検証し、トークンを正常に返します。
2) HTTP ヘルパー メソッド:
3) 呼び出しコード: