我有一个自我托管的OWIN应用程序配置为授权服务器和信号源资源服务器。解耦自我主机OWIN授权服务器
我的客户正在成功获取不记名令牌,并在随后调用signalR集线器时将其呈现给授权用户。
我的下一步是分离授权服务,以便它可以在自己的主机上运行。要开始,我创建了一个单独的自托管应用程序,其中只包含授权服务代码。它仍然是我开发机器上的一个解决方案,但授权服务和signalR资源托管在单独的进程中。
验证流程仍然正常工作。令牌正在进入我的资源服务器,但现在从信号集线器获得401未授权。
在ASP.Net Web API中有很多支持来解决这个问题,在这个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(),
});
}