有API-A、API-B两套API系统
用户端系统和管理端系统都可以访问两个API,其中用户端系统只能访问供用户使用的API,管理端系统可以访问所有API,但主要是访问一些操作数据的API,例如修改用户信息等一些管理后台的API。
用户端系统的前端页面和管理端系统的前端页面域名一样都是 xxx.com,只是二级域名的区别。
现在怎么让两套用户系统同时使用一套IdentityServer来进行授权认证?
怎么让用户端系统登录是一个页面,管理端系统登录又是另外一个页面?
怎么保证两端同时能正确的进行授权认证而不出现授权信息混乱?
Scope肯定是不行,Scope是确定对整个服务的访问;
你这边你可考虑给不同类型的用户生成token 的时候给不同的claim或者role,比如管理端给 admin user,用户给user;
在用户可访问的接口设置policy=user ,管理员访问的接口设置 policy= admin,
登录成功之后可以根据用户类型跳转到对应的用户端页面或者管理端页面
听上去 就是一个 单点登录 流程。IdentityServer4是 支持的。
登录界面 是 由IdentityServer4提供的,肯定只能是一个。
客户端认证方式参考
services.AddAuthentication(options =>
{
options.DefaultScheme = "Cookies2";
options.DefaultChallengeScheme = "oidc";
})
.AddCookie("Cookies2")
.AddOpenIdConnect("oidc", options =>{})
权限问题的话,可以通过配置 Client的 AllowedScopes 来控制 每个client权限的差异。