首页 新闻 搜索 专区 学院

关于app,identityserver4的登录页的问题

0
悬赏园豆:5 [已解决问题] 解决于 2020-03-31 22:11

ionic app使用identityserver4登录,登录页是在identityserver服务器上,还是在app建登录页?如果是在identityserver登录页的话,那app启动不得加载页面?能否使用app的登录页,然后登录使用identityserver的接口??

树形图的主页 树形图 | 初学一级 | 园豆:4
提问于:2019-12-17 21:30
< >
分享
最佳答案
0

两个方案:

  1. app使用Authorization Code方式进行认证, 那么就需要app打开一个内嵌的浏览器来打开ids4提供的登陆页面.
  2. app使用用户名+密码方式进行认证, 这就无需ids4提供登陆页面了,调用接口即可.

无论哪种方案, app都需要保存登录后的token在本地的, 这样下次打开app就可以直接用.

收获园豆:5
blackheart | 老鸟四级 |园豆:3719 | 2019-12-17 21:56

请问Implicit 认证模式是什么认证模式?如果app使用identity的登录页,第一次打开应用就要加载登录页,这种体验肯定不好,所有只能使用用户名,密码的方式

树形图 | 园豆:4 (初学一级) | 2019-12-17 22:09

@树形图: implicit是给无法保存第三方客户端的密钥的场景用的,比如运行在浏览器中的纯前端应用(无服务端)。

自家的app,用户名密码还是最合适的。ids4也是直接支持这种模式的。

blackheart | 园豆:3719 (老鸟四级) | 2019-12-17 23:18

@blackheart: 那angular客户端怎么使用登录呢?我在网上找了很多,都是C#客户端的

树形图 | 园豆:4 (初学一级) | 2019-12-18 10:06

@树形图: 这正是implicit模式的用武之地,给你个示例:https://github.com/linianhui/oidc.example 中的http://oidc-client-js.test站点就是这种情况,它是js+html的纯前端应用,没有服务端。和angular/react.js/vue.js等等所写的前端是等价的。

blackheart | 园豆:3719 (老鸟四级) | 2019-12-18 10:11

@blackheart: 用密码模式做验证,被保护的api资源,怎么获取用户信息??怎么知道是谁登陆了?

树形图 | 园豆:4 (初学一级) | 2019-12-19 09:50

@树形图: 账号密码都给你了,你还不知道是哪个用户吗?授权服务器肯定知道啊。 token就是一个token罢了,和其他的授权码,隐式授权得到的token是一样的。调用ids4实现的OAuth2 Token Introspection接口就可以获得token的详细信息,其中就包含用户id。如果你是用的jwt,则jwt里面通常就直接包含用户id(sub claim)了。

blackheart | 园豆:3719 (老鸟四级) | 2019-12-19 10:17

@blackheart: 我想了解下你的第一个方案是app怎么获取到token或者说authorizecode呢?

心雨纷扬 | 园豆:309 (菜鸟二级) | 2021-04-14 17:07

@blackheart: 能不能只通过httpapi的调用获得token,得到authorize token之类的

心雨纷扬 | 园豆:309 (菜鸟二级) | 2021-04-14 17:11

@心雨纷扬:
问题1:
app调起浏览器,用户通过浏览器完整认证,然后浏览器再携带authorizecode重定向到app。

问题2:

  1. 通过refresh_token可以直接调用token的http api。
  2. 客户端凭证模式情况下整个流程都不需要用户参与,可以直接调用token的http api。
  3. 用户名密码模式下也可以直接调用token的http api。
    authorizecode模式下是不可以的,因为整个流程中需要用户完成认证这个步骤。而上述3种情况则是:1是已经认证过了,2是无需用户认证,3是用户直接给了账号和密码,你代替它去完成认证。
blackheart | 园豆:3719 (老鸟四级) | 2021-04-18 14:50
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册