我正在尝试一个解决方案,其中一个Web应用程序正在为多个域提供服务,对于每个域我想配置自己的提供程序,使用app id和外部提供程序的机密,我希望基于当前域名从数据库中读取cookie域和提供商信息,例如:
switch (currentDomainName)
{
case "web1.com": load cookie domain and providers information for web1.com ...
case "web2.com": load cookie domain and providers information for web2.com ...
...
}
我面临两个主要问题:
我想知道我是否可以覆盖一些Owin方法并使其非静态...或者可能找到一种方法以不同的方式实现它(但我仍然喜欢使用Owin)
我从哪里开始?
答案 0 :(得分:0)
您可以获取请求网址,然后在数据库中查找以查看与域相关的客户是什么。可能有一个表列出了该域的身份提供者
实施例
TenantDomains
*************
TenantId URL ......
tenant1 https://tenant1.company.com
tenant2 https://tenant2.company.com
IdProviders
***********
TenantId ProviderIds ......
tenant1 Custom, Social
tenant2 Social
为了便于阅读,这里使用名称而不是标识符。但是,方法仍然保持不变。
您可以在中间件中执行上述所有查找,然后使用Environment
中的值,然后根据之前做出的数据或决策设置管道。
示例:强>
您可以从OWIN Context访问传入的请求,并从Owin上下文的请求本身执行HttpRequest上的所有操作。
app.MapWhen(req => req.Request.Headers.ContainsKey("Authorization"), apiAuth =>
{
// do anything that matches this request
apiAuth.UseBearerAuthentication(new BearerAuthenticationOptions());
});
HTH