我对访问令牌续订/刷新的设置有疑问。我们的设置:
该应用程序必须适用于某些严格的安全规则和知识产权。 我们需要在访问令牌到期之前更新它,并且API返回401。 我看过oidc-client-js来处理它。但是这将取消像我们今天那样验证静态文件的选项,因为MVC应用程序不再存在cookie。
有没有办法保护它们,或者只是在使用OpenID Connect构建SPA时我们必须接受的东西?
答案 0 :(得分:1)
如果您想对静态文件强制执行授权,则需要通过服务器端代码来完成。由于您的客户端使用MVC后端,我的建议是将Hybrid Flow与Katana OpenID Connect中间件结合使用。然后,您可以通过您的视图(cshtml)将您想要使用的任何令牌从服务器端代码传递到SPA。
NuGet上提供了所需的中间件:
install-package Microsoft.Owin.Security.Cookies
install-package Microsoft.Owin.Security.OpenIdConnect
以下代码段允许在您的OWIN管道中进行配置(从this tutorial获取并略有改动):
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = "Cookies"
});
app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
{
Authority = "https://localhost:44319/identity",
ClientId = "mvc",
RedirectUri = "https://localhost:44319/",
ResponseType = "code id_token",
Scope = "openid offline_access",
SignInAsAuthenticationType = "Cookies"
});
使用此流程,您不再立即获得令牌,但需要交换返回的身份验证码("代码"授权类型),对于一对令牌:
有关上述配置的主要注意事项是响应类型和范围。
像这样,我们已经解决了您的访问令牌到期问题,并已开始通过将授权移至后端来解决您的静态资产问题。为了帮助您完成下一部分,我需要知道您如何为资产提供服务,因为根据您使用的是OWIN还是IIS,有不同的方式。