承認サーバーとシグナル リソース サーバーとして構成された自己ホスト型の OWIN アプリケーションがあります。
私のクライアントは正常にベアラー トークンを取得し、signalR ハブへの後続の呼び出しで承認のために提示しています。
次のステップは、承認サービスを分離して、独自のホストで実行できるようにすることです。まず、承認サービス コードのみを含む別の自己ホスト型アプリを作成しました。私の開発マシンではまだすべてが 1 つのソリューションになっていますが、承認サービスと signalR リソースは別のプロセスでホストされています。
認証フローは引き続き正常に機能しています。トークンはリソース サーバーに到達していますが、signalR ハブから 401 無許可を取得しています。
ASP.Net Web API でこれを解決するための多くのサポートがあり、web.config ファイルの machine.config 値を同期します。しかし、それは私のアーキテクチャではありません。HttpListener の下で自己ホスト型アプリとして実行すると、別の暗号化 (既定では DPAPI) が使用されます。
自己ホスト型アーキテクチャでこれを解決することについては、あまり議論されていないようです。私の理論では、同じマシン上の異なるプロセスの下でも、DPAPI 復号化が失敗しているため、401 が表示されます。
これを解決するための最小限のアプローチがあるかどうか、または代わりに JWT を使用するために完全にリファクタリングする必要があるかどうかを把握しようとしています。
編集:セットアップを表示するのに役立つコードを追加する
public void ConfigureOAuth(IAppBuilder app)
{
OAuthAuthorizationServerOptions OAuthServerOptions = new OAuthAuthorizationServerOptions()
{
AllowInsecureHttp = false,
TokenEndpointPath = new PathString("/account/login"),
AccessTokenExpireTimeSpan = TimeSpan.FromDays(1),
Provider = new SimpleAuthorizationServerProvider()
};
app.UseOAuthAuthorizationServer(OAuthServerOptions);
}
public void ConfigureOAuth(IAppBuilder app)
{
app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions
{
Provider = new ApplicationOAuthBearerAuthenticationProvider(),
});
}