【问题标题】:HTTP requests for WSO2 Identity Server user authenticationWSO2 Identity Server 用户身份验证的 HTTP 请求
【发布时间】:2023-03-07 09:06:02
【问题描述】:

我正在编写一个 REST API,供我们的内部应用程序使用。我需要通过 http 请求使用 code grant 登录和注销身份服务器的用户

presentation

我需要知道如何调用以下端点:

  • /authorize(从服务器端调用)
  • /accesstoken(从服务器端调用)
  • /登录
  • /注销

案例:

我们公司有很多应用。我希望在他们的 company-x 帐户中进行一点身份验证,例如您只需要登录到 atlassian 帐户即可访问 jira 和汇合云。我正在使用的 REST API 适用于我们的前端开发人员(截至目前)。

presentation

我不能简单地让用户登录到 WSO2 IS,因为他们只需要一个模块来管理他们的 company-x 个人资料和其他基本资料。通过这个,我认为我有两个选择:

  1. 自定义 WSO2 身份服务器 UI 和权限。但问题是,我仍然需要一个端点来获取该 id_token。我也不确定这是否是正确的方法。
  2. 知道如何调用 /authorize、/accesstoken、/login 和 /logout 端点并编写我自己的所需的最少 UI 并提供一个将响应 id_token 的端点>

【问题讨论】:

    标签: oauth-2.0 wso2 wso2is openid-connect


    【解决方案1】:

    在前端有一个基本的登录页面并使用request path authenticator获得授权code/id_token

    基本上,这意味着您可以从您创建的基本登录页面中提取用户名和密码,并将授权授予请求与凭据一起发送,而不是将用户重定向到 IS 登录页面。

    所以您的授权码请求将是:

    https://localhost:9443/oauth2/authorize?response_type=code&client_id=JqB4NGZLMC6L3n4jz094FMls2Joa&redirect_uri=https://localhost/callback&scope=openid&sectoken=<sec_token>
    

    sec_token = base64encode(用户名:密码)

    您需要在您的服务提供商配置中添加 basic-auth request path authenticator。此请求应向您返回授权code。如果您想要id_token,只需使用隐式流程和请求路径身份验证。

    【讨论】:

    • 我很困惑我到底在哪里找到code/id_token。它是否传递给redirect_uri(如何?requestbody 或 header)?还是作为请求发送者中的一种响应形式?我试图把http://localhost:8080/playground2/oauth2clientredirect_uri 在邮递员中,响应是html 表单。
    • id 令牌作为回调 url 中的查询参数传递,例如:localhost/callback?id_token=<base64encoded_token>
    • 现在更清楚@bhathiya 处理来自 REST 调用的重定向意味着什么(因为我通过邮递员发送请求)。
    【解决方案2】:

    如果您使用代码授权类型,则会出现从/authorize/login 的浏览器重定向。我认为您无法通过 REST 调用来处理它。 (您可以通过在每个 302 响应的 location 标头中调用 url 来处理此问题。但我认为这不是一个好方法。)如果您想开发 REST API,我认为 password授予类型会更合适。

    【讨论】:

    • 是的,我也对重定向感到困惑。我对密码授予的唯一问题是 access_token 和 id_token 将在客户端公开。我有什么选择来解决这个安全问题?喜欢使用 API 密钥吗?顺便说一句,我打算在客户端使用像 session_id 这样的 id_token 。非常感谢^^
    • 您的客户不是基于浏览器的吗?他们不能处理浏览器重定向吗?有关会话管理信息,请参阅docs.wso2.com/display/IS520/Session+Management+with+Playground
    • 顺便说一句,您对密码授予类型的担忧有点令人困惑。即使在代码授权类型中,客户端应用程序最后也会收到访问令牌,对吗?密码授予类型的问题是用户必须将其凭据提供给客户端应用程序。但是如果客户端应用程序无法处理浏览器重定向,这是唯一的处理方法。
    • 如何在前端有一个基本的登录页面并使用请求路径身份验证。基本上,这意味着不是将用户重定向到 IS 登录页面。
    • @Bhathiya 抱歉,如果现在对我有意义,为什么您建议 password 授予这种情况,因为我的 RP 是第一方应用程序,并且身份验证集中到 IS (SSO)。但是@farasath 答案仍然更加安全,因为您知道 access_token/id_token 将在预期的 url(回调)中,对吧?
    猜你喜欢
    • 2017-01-30
    • 1970-01-01
    • 2017-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-17
    • 2016-08-31
    相关资源
    最近更新 更多