Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在.Net Core中的Stormpath中检索用户的组织?_.net_Asp.net Core_Identity_Claims Based Identity_Stormpath - Fatal编程技术网

在.Net Core中的Stormpath中检索用户的组织?

在.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引用中找不到任何东西。到目前为止,我已经尝试: 正

我有一个使用Stormpath中间件进行身份验证的应用程序设置。我还将我的帐户设置为使用“按组织分组”模式。它似乎是登录的,但我正在努力寻找一种合理的方法,根据登录的用户获取组织ID或名称

使用Stormpath.SDK.Account引用,我可以执行以下操作:

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之外帮你解决了这个问题,但我想回过头来,为任何可能通过谷歌找到它的人发布一个正式答案。干杯