如何解决OWINStartup - 为什么它必须在应用程序初始化时运行
作为背景上下文,我正在为我们的 SAAS 应用程序编写 SSO 网关,两者都是 ASP.NET Web 应用程序,因此网关将包含来自 OKTA、google、MS/Azure、Amazon Cognito 等的引用。我是没有将它本机地放在 SAAS 应用程序中,因为我们不信任来自 amazon、okta 等公司的代码,因为它们与来自 nuget 的无数库以及 nuget 版本控制的所有噩梦一起扔在一起,而 okta 甚至不签名他们目前的 API 程序集(世界领先的安全公司,谁会想到!) - 所以它必须是一个独立的网络应用程序,在架构上对我们来说是可以的。
对于 okta 和其他人,我可以看到使用 OWINStartup 的唯一方法是通过 Assembly 关键字,如下所示:
<Assembly: OwinStartup(GetType(OKTAStartup.Startup))>
Namespace OKTAStartup
Public Class Startup
Public Sub Configuration(ByVal app As IAppBuilder)
app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType)
app.UseCookieAuthentication(New CookieAuthenticationOptions())
app.UseOktaMvc(New OktaMvcOptions() With {
.OktaDomain = "https://xxx.okta.com",.ClientId = "yyy",.ClientSecret = "zzz",.AuthorizationServerId = "default",.RedirectUri = "https://localhost:44302/blah.aspx",.PostLogoutRedirectUri = "https://localhost:44301/a.aspx",.GetClaimsFromUserInfoEndpoint = True,.Scope = New List(Of String) From {
"openid","profile","email"
}
})
End Sub
End Class
End Namespace
为什么这段代码必须在应用初始化时运行?对我来说,良好的编程习惯是在需要之前不要调用代码。也许它对程序集做了一些我不明白的事情,但我更喜欢做的是在需要时而不是在需要之前调用 OWINstartup。
上述架构还需要启动代码中的一组凭据,但我们的应用程序将从同一实例为多个 okta 帐户提供服务,因为许多客户将通过他们自己的 okta 帐户登录他们的员工。因此,如果我们坚持在应用程序初始化时使用它,我们如何支持多个 okta 帐户?
提前致谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。