在.Net Core中的Stormpath中检索用户的组织?
我有一个使用Stormpath中间件进行身份验证的应用程序设置。我还将我的帐户设置为使用“按组织分组”模式。它似乎是登录的,但我正在努力寻找一种合理的方法,根据登录的用户获取组织ID或名称 使用Stormpath.SDK.Account引用,我可以执行以下操作:在.Net Core中的Stormpath中检索用户的组织?,.net,asp.net-core,identity,claims-based-identity,stormpath,.net,Asp.net Core,Identity,Claims Based Identity,Stormpath,我有一个使用Stormpath中间件进行身份验证的应用程序设置。我还将我的帐户设置为使用“按组织分组”模式。它似乎是登录的,但我正在努力寻找一种合理的方法,根据登录的用户获取组织ID或名称 使用Stormpath.SDK.Account引用,我可以执行以下操作: private readonly IAccount _account; var name = _account.FullName; 我希望类似的东西可以用来检索组织,但我在他们的SDK引用中找不到任何东西。到目前为止,我已经尝试: 正
private readonly IAccount _account;
var name = _account.FullName;
我希望类似的东西可以用来检索组织,但我在他们的SDK引用中找不到任何东西。到目前为止,我已经尝试:
正在从我的索赔中检索组织,但是,当我从以下代码中查看索赔的属性时,我不认为这是一个选项:
ClaimsPrincipal _claim = new ClaimsPrincipal(User.Identity);
var OrganizationId = _claim.FindFirst("onk").Value;
我也没有看到从标题中检索组织的方法。是的,但是核心的SDK似乎不允许我这样做
理想情况下,我希望用户能够登录,而无需在登录表单中将其租户指定为子域或字段。由于它将按顺序通过我的组织商店,我希望这是可行的
关于我遗漏的内容有什么想法吗?可以在Stormpath中使用
namekey
如何创建组织
var bankOfAOrg = client.Instantiate<IOrganization>()
.SetName("Bank of A")
.SetNameKey("bank-of-a")
.SetStatus(OrganizationStatus.Enabled);
为了能够以上述方式向组织中添加组和帐户,我们还应确保将此帐户存储标记为帐户和组的默认值:
newMapping.SetDefaultAccountStore(true)
.SetDefaultGroupStore(true);
await newMapping.SaveAsync();
向组织中添加帐户:
// With a reference to an IDirectory:
var newMapping = await bankOfAOrg.AddAccountStoreAsync(existingDirectory);
// Or simply by href:
newMapping = await bankOfAOrg.AddAccountStoreAsync("directory_href");
var chewie = client.Instantiate<IAccount>()
.SetGivenName("Chewbacca")
.SetSurname("the Wookiee")
.SetUsername("rrwwgggh")
.SetEmail("chewie@kashyyyk.rim")
.SetPassword("Changeme123!");
chewie.CustomData.Put("favoriteShip", "Millennium Falcon");
await bankOfAOrg.CreateAccountAsync(chewie);
var chuwie=client.Instantiate()
.Setgivename(“丘巴卡”)
.SetSurname(“伍基人”)
.SetUsername(“rrwwgggh”)
.SetEmail(“chewie@kashyyyk.rim")
.SetPassword(“Changeme123!”);
chewie.CustomData.Put(“favoriteShip”、“千年隼”);
等待bankOfAOrg.CreateAccountAsync(丘伊);
有关更多信息,请查看。您在问题中提到了这一点,但当前的情况是,如果您在登录期间指定了组织,您将在用户的访问令牌中获得一个
onk
声明
例如:
var request = new PasswordGrantRequest
{
Username = "nate@foo.bar",
Password = "Secret123?",
OrganizationNameKey = "acme-org"
}
var response = await application.ExecuteOauthRequestAsync(request);
// response.AccessTokenString will contain an onk claim
理想情况下,我希望用户能够登录,而无需在登录表单中将其租户指定为子域或字段。由于它将按顺序通过我的组织商店,我希望这是可行的
这在当前的组织对象中是不可行的,但在组对象中是可行的,因为您可以在事后枚举帐户的组
免责声明:我在Stormpath工作。这实际上是我现在正在指定和处理的一个用例(我是Stormpath SDK的作者)。这样我才能正确理解您的情况:您不会在登录期间指定组织(让默认登录流通过组织进行迭代),并且希望稍后获得用户的组织?是的。例如,如果我要使用多租户登录系统,我希望组织与我的用户帐户有很多关系。同样,一个用户与一个组织有一个(或多个)关系。这样,我就可以使用Account.OrganizationId在自己的数据库中管理TenantId列。目前,我似乎可以从.NET中的主机头中获取。不过,我还没有弄明白如何通过标准/登录表单传递这些信息。啊,一开始你的问题中没有提到“每个组织的组模型”。只是想澄清一下:您使用Stormpath组资源为租户建模了吗?正确。我可以让系统使用域模型,从主机中检索和解析租户。我宁愿从API中的帐户上下文中获得它。它看起来更干净,对前端的依赖更少。在任何情况下,我都有一张罚单,因为我的Stormpath帐户的身份验证似乎完全被破坏了,所以我没有办法进一步测试。我想我已经在StackOverflow之外帮你解决了这个问题,但我想回过头来,为任何可能通过谷歌找到它的人发布一个正式答案。干杯