問題タブ [owin-middleware]

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.

0 投票する
2 に答える
1098 参照

c# - [Authorize] 属性の使用時に認証 Cookie が読み取られない

Cookie 認証を使用して asp.net アプリケーションを構成するためのサポートが必要です。これは私の構成がどのように見えるかです:

私のログインAPIルートは次のとおりです。

ログインを呼び出すと、 .AspNet.ApplicationCookieという名前の Cookie が返されますが、ログアウトアクションを呼び出すと、次のようになります。

次のエラーが表示されます:この要求に対して承認が拒否されました

私は何を間違っていますか?

注: [Authorize]属性でコントローラーを装飾しました

0 投票する
1 に答える
1011 参照

c# - Owin の構成値を動的に変更する

私は Owin パイプラインを使用しており、startup.auth.cs でアプリケーションの Cookie 間隔を以下のように設定しています timeout=Convert.ToDouble(ConfigurationManager.AppSettings["SessionTimeOut"]);

web.config で SessionTimeout の値を変更すると、IIS を再起動して新しい値を取得する必要があります。startup.auth.cs は初回のみ呼び出されるためです。とにかく、IIS を再起動せずに Cookie の有効期限を動的に変更できますか。また、startup.auth.cs で構成するシングル サインオンに kento.authservices を使用しています。これの構成値も動的に変更する必要があります。これについて助けてください。

0 投票する
1 に答える
43 参照

single-sign-on - SSO の状況でアプリの初期化を処理する場所は?

App1 と App2 があり、Active Directory で IdentityServer3 を使用して SSO を実行しています。

各アプリには独自のユーザーとロールがあります。ClaimsTransformation OWIN ミドルウェアを作成し、ユーザー/ロールを取得し、Cookie にシリアル化してから、後続の呼び出しに戻します。それはうまくいきます。

しかし、最初のユーザー登録はどこで行うのでしょうか? 認証ではできません。App1 ユーザーがログオンしてから、新規として App2 に移動すると、認証がスキップされるためです。

ミドルウェアでこれを行うと、ユーザーを登録/プロファイル ページにリダイレクトしようとすると、そのリダイレクトが再びミドルウェアにヒットし、リダイレクト ループが発生します。

助言がありますか?ありがとう。

0 投票する
2 に答える
7543 参照

c# - ミドルウェアの OWIN Request.Body を変更する

API 呼び出し用のカスタム暗号化ミドルウェアを実装したいと考えています。最初に、リクエストのボディ ( IOwinContext.Request.Body) とヘッダー (Encryption-Key & Signature) を読み取ります。次に、リクエスト本文を復号化します。これにより、純粋な json 文字列が得られます。ここで、注意が必要な部分があります。この json を に書き戻したいIOwinContextRequest.Bodyので、オブジェクトに逆シリアル化し、後で Controller メソッドの引数として渡すことができます。これが私がすることです:

起動:

ミドルウェア:

今、私が得るのはこのエラーです:

System.Web.Extensions.dll!System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializePrimitiveObject() 例外がスローされました: System.Web.Extensions.dll の 'System.ArgumentException'

元の場所IOwinContext.Request.Body

したがって、この方法でリクエストボディを変更することはできないと想定しました。これをテストするために、ミドルウェアを次のように書き直しました。

Controllerメソッドは「newBody」ではなく「ORIGINAL BODY」を受け取るべきだと思ったのですが、実際には次のエラーが発生しました。

System.dll!System.Diagnostics.PerformanceCounter.InitializeImpl() 例外がスローされました: System.dll の 'System.InvalidOperationException'

追加情報: 要求されたパフォーマンス カウンターはカスタム カウンターではないため、ReadOnly として初期化する必要があります。

問題は、私のアプローチの何が問題なのですか? リクエストボディを書き換える正しい方法は何ですか? 十分な回避策はありますか? ところで: データの復号化はテスト済みで完璧であるため、エラーが発生することはありません。

編集:回答/コメントする前に、TLS は既に使用されています。これは、セキュリティのもう 1 つのレイヤーです。私は車輪を再発明しているわけではありません。新しいものを追加しています。

0 投票する
1 に答える
217 参照

.net - ミドルウェアでNUnitテストケースをスキップする

ユーザー名とパスワードを認証した後、トークンを発行する OAuthServerProvider があります。ユーザー名またはパスワードが無効な場合、owin Context を拒否します。これは、デフォルト400 Bad Requestでステータス コードとして返されます。

しかし、私は401 Unauthorized

これを実現するために、ヘッダーをチェックしてカスタム ヘッダーが存在するかどうかを確認し、存在する場合はステータス コードを 401 に置き換えるミドルウェアを作成しました。

これは、フィドラーでヒットするとまったく問題なく動作しますが、以下に記述した単体テストは常に 400 を取得します。どういうわけか、単体テストでリクエストを行うと、ミドルウェアがスキップされます。

ここで私が間違っていることを知る必要があります。

0 投票する
1 に答える
3399 参照

c# - IdentityServer、ASP.NET Core、および Web API

IdentityServer4 と別のクライアント ASP.NET Core アプリケーションをセットアップしました。クライアントは、IdentityServer で認証し、標準の MVC Web API プロジェクトである 3 番目のアプリケーションへのアクセスを要求する必要があります。

この例からクライアント資格情報フローを達成するための手順に従いました https://identityserver.github.io/Documentation/docsv2/overview/simplestOAuth.html

今、私は、Web API が最初に Bearer トークンを認識し、次に Web API エンドポイントにアクセスするための認証を与える方法について完全に迷っています。

これは私のIdentityServer Statrup.csです

と Config.cs

IdentityServer および Web API への ASP.NET Core 呼び出し

ASP.NET Core クライアントからの呼び出しを処理するために WEB APi (owin ミドルウェアを使用) を取得するために何をすべきかについて、誰かが説明したり、いくつかのリンクを共有したりできますか? Owin Configuration(IAppBuilder app) メソッドにどのような設定を入れる必要がありますか。

0 投票する
1 に答える
2349 参照

asp.net - Cookie を ASP.NET OWIN OpenIdConnect コード認証フローのトークン ベース認証に置き換える

MVC を使用してシングル ページ アプリケーションを提供し、Web API を ajax 呼び出しに使用する ASP.NET で記述された Web アプリケーションがあります。

認証では、Microsoft.OwinOpenIdConnectを Azure AD の機関として使用します。OAUTH フローは、サーバー側のコード承認です。次に、Startup.Auth.cs

サインインをクリックすると、ルートが次の MVC コントローラーのメソッドにマップされる URL に移動します。

次に、アプリケーションに接続されたエンド ユーザーは、ASP.NET Cookie を使用して、クライアント アプリと ASP.net サーバーの間で認証されます。代わりにトークンベースのアプローチを使用したいと考えています。興味があるなら、これが理由です。

Nuget パッケージMicrosoft.Owin.Security.CookiesMicrosoft.Owin.Security.OAuthに置き換え、Startup.cs で置き換えようとしました

app.UseCookieAuthentication(cookieAuthenticationOptions);app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions());

私のAccountController ではHttpContext.GetOwinContext().Authentication.SignOut(authenticationProperties, OpenIdConnectAuthenticationDefaults.AuthenticationType, CookieAuthenticationDefaults.AuthenticationType);、チャレンジを からに変更しましたHttpContext.GetOwinContext().Authentication.SignOut(authenticationProperties, OpenIdConnectAuthenticationDefaults.AuthenticationType, OAuthDefaults.AuthenticationType);

問題は、Cookie を使用すると、指定した URL へのリダイレクト中にフローが完了すると、Web 要求応答で set-cookieが自動的に送信されることです。UseOAuthBearerAuthentication を使用して OWIN によって生成されたベアラーはどこにありますか (存在する場合) **、**どこで、いつクライアント SPA に返送する必要がありますか?

注:私たちがやろうとしていることのオープン ソース サンプルは、この github リポジトリにあります。

0 投票する
0 に答える
43 参照

c# - アクション メソッドで要求 DbContext ごとに OWIN インスタンスにアクセスするにはどうすればよいですか?

私はこのコードに気づきませんでした:

そのDbContextため、リクエストの開始時と終了時にインスタンスを作成して破棄するためのフィルターも作成しました。

OWIN がこれを行っているように見えますが、OWIN が処理する にアクセスするにはどうすればよいDbContextでしょうか?

IAppBuilder.CreatePerOwinContext をどのように正確に使用する必要がありますか?という質問に対する受け入れられた回答 私にとってはうまくいきません. parameterless はなく、タイプのGet()だけを使用するとAssemblyQualifiedNamenull が返されます.

0 投票する
1 に答える
756 参照

asp.net-web-api2 - Autofac、OWIN、およびリクエストごとの一時的な登録

Autofac で Web API OWIN パイプラインを使用する場合の一時的な要求スコープの作成について質問があります。

QA チームがネガティブなテスト ケースをテストできるように、一部の外部依存関係を必要に応じて無効にする必要があります。私は通常のアプリケーション フローでコードを変更したくなかったので、特定の QA ヘッダーの要求を検査するカスタム ミドルウェアを作成し、それらが存在する場合は通常のコンテナーを一時的な新しいスコープで拡張し、置換を登録しました。オブジェクトはその呼び出しに対してのみ、autofac:OwinLifetimeScope をオーバーライドし、その呼び出しの最後にその一時的なスコープを破棄します。

これにより、そのリクエストに対してのみコンテナの通常の動作をオーバーライドできるようになりましたが、他のすべてのリクエストは通常​​どおり続行できます。

これは私のミドルウェアの変更されたサンプルです。このコードは期待どおりに完全に機能しています。

ただし、行は

非常にハックなようで、私はそれらが好きではありません。あらゆる場所を検索しましたが、コンテキスト オブジェクトをきれいにオーバーライドする方法や、この機能を実装するより良い方法を見つけられませんでした。

これを処理するためのより良い方法についての提案を探しています。

0 投票する
2 に答える
1383 参照

asp.net - OWIN/Katana OAuth 2.0 Authorization Server で ASP.NET Core WEB API トークン認証をリソース サーバーとして使用する

OWIN/Katana OAuth 2.0 認証サーバーで ASP.NET Core Web API サービス認証を使用することは可能ですか?

ASP.NET 4.5.x WEB API 2 で既定の (ベアラー) OAUTH2 アクセス トークンを使用するには、次のように追加します。

そして、machinekey を web.config に追加します。

ASP.NET Core Web API で OWIN/Katana OAuth 2.0 Authorization Server (トークンはデフォルトの TicketDataFormat にあります) からアクセストークンを使用することは可能ですか?