我正在尝试实现 IdentityServer4。所有客户端都将是 javascript 应用程序(在 react js 中)。我的问题是:
1.- 我们将拥有我们的自定义用户数据库,因此我正在尝试使用 Aspnet 身份实现 de IS4,例如 de 6th example。但是,由于我的客户端是基于 Javascript 的,我必须使用隐式流,并且在示例中(就像使用 MVC 客户端完成的那样)是在考虑 HybridAndClientCredentials 的情况下制作的。此外,MVC 登录应用程序似乎不包括同意步骤。我结合 AspnetIdentity 示例实现了 javascript 客户端示例。起初它给了我错误:IdentityServer4.Validation.ScopeValidator: Error: Invalid scope: api2, (api2 它是客户端将调用的 Api),但 api2 包含在客户端定义中:
new Client
{
ClientId = "js2",
ClientName = "JavaScript Client 2",
AllowedGrantTypes = GrantTypes.Implicit,
AllowAccessTokensViaBrowser = true,
RequireConsent = true,
RedirectUris = { "http://jstwo:5004/callback.html" },
PostLogoutRedirectUris = { "http://jstwo:5004/index.html" },
AllowedCorsOrigins = { "http://jstwo:5004" },
AllowedScopes =
{
IdentityServerConstants.StandardScopes.OpenId,
IdentityServerConstants.StandardScopes.Profile,
"api2"
},
AllowOfflineAccess = true
}
只是为了继续前进,我从客户端调用中删除了该范围,并且它起作用了。我登录了,但由于缺少同意步骤,客户端崩溃了。
所以,我想我在这里有点迷路了。我应该找到一种方法来跳过 conset 步骤吗?(这很好,因为我们不希望这一步,所有用户都将是内部的)。
2.- 我们还需要在数据库中保留示例 8_EntityFrameworkStorage 中的所有结构。我可以将这种方式与 AspIdentity 结合使用吗?
参考的样本:https ://github.com/IdentityServer/IdentityServer4.Samples
非常感谢您的阅读。