移动应用程序的 OAuth2 流程

2023-11-25

我们有一个预先存在的移动应用程序。用户将注册他的用户名和密码。目前我们有一个基于自定义令牌的身份验证。我们希望在不影响用户体验的情况下切换到 OAuth2。看起来资源所有者密码凭证对我们来说是最接近的流程,但是有很多建议反对使用它们...任何其他建议...我们计划使用 IdentityServer4


太棒了;采用授权码流程 + PKCE

对于无法转换(迁移)为完全 OAuth 客户端的客户端,可以授予资源所有者密码凭据。另外,请注意,规范严格提及与客户端和最终用户的信任关系。

From 规格

资源所有者密码凭据授予类型适用于 资源所有者拥有的情况信任关系与 客户端,例如设备操作系统 or a 高度特权 应用。授权服务器在以下情况下应特别小心: 启用此授权类型,并且仅在其他流不允许时才允许它 可行的。

所以你听到的都是正确的。仅当您别无选择时才必须使用此选项。请注意,通过使用此流程,您将失去 OAuth 2.0 的本质。您将向客户端公开最终用户凭据。!

迁移到 OAuth 2.0

移动客户端有公共客户。移动客户端的建议补助金是授权码授予类型。另外,由于它是公共客户端,您必须使用PKCE(OAuth 公共客户端代码交换的证明密钥)。 PKCE 为授权代码授予类型添加了额外的保护层。

迁移到 OAuth 2.0 需要对您的移动应用程序进行更改。您将必须重新设计应用程序的登录功能。但不要害怕,有很多优秀的库可用于支持 PKCE 的 OAuth 2.0。 IdentityServer4 也将支持这些协议。

如果您采用 OAuth 2.0,您就可以无缝更改授权服务器(通过某些配置)。这意味着同一应用程序可以使用来自不同授权服务器的用户。因此,请使用授权代码流程 + PKCE

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

移动应用程序的 OAuth2 流程 的相关文章

随机推荐

  • LINQ GroupBy 连续时间

    假设我有一个如下所示的简单结构 public class Range public DateTime Start get set public DateTime End get set public Range DateTime start
  • 在所有设备上显示像素完美的画布

    我有一些画布 我想在每个 现代 浏览器中以像素完美的方式显示它们 默认情况下 具有高 DPI 屏幕的设备会缩放我的页面 以便所有内容看起来都大小正确 但它破坏了 我画布的外观 如何确保画布中的一个像素 屏幕上的一个像素 最好这不会影响页面上
  • .NET 跟踪不适用于 Diagnostics.TraceSource,仅适用于 Diagnostics.Trace

    我正在尝试设置 NET 跟踪 我可以通过 System Diagnostics Trace 进行基本跟踪 但由于复杂的原因 我必须通过 System Diagnostics TraceSource 对象 自 NET 2 0 以来的新方法 激
  • 将带有百分比编码的 QUrl 转换为字符串

    我使用用户输入的 URL 作为文本来初始化 QUrl 对象 稍后我想将 QUrl 转换回字符串以显示它并使用正则表达式检查它 只要用户不输入任何百分比编码的 URL 这种方法就可以正常工作 为什么下面的示例代码不起作用 qDebug lt
  • 字节消息参数错误

    我无法弄清楚 字节 方法在抱怨什么 在下面的代码中 我尝试为我的客户端生成身份验证密钥 但我不断收到此错误 1 import hmac import hashlib import base64 message bytes Message u
  • 如何正确设置AppExecutionAlias以便可以从命令行启动程序?

    此 WPF 应用程序的 Package appxmanifest 已设置
  • 保护服务器上的 Breeze 以防止恶意更新外键

    问题 我只是想弄清楚在 Breeze 中保存更改时我需要在服务器端实现多少安全性 特别是 我正在考虑恶意用户如何手动破解 SaveChanges 请求 或破解客户端中的 javascript 以绕过我的正常业务规则 例如 恶意更改我的实体上
  • 如何启用 Google Vision API 在同一项目中访问 Google Cloud Storage Bucket

    我已将一些测试图像上传到 Google Cloud Bucket 但不想公开它们 这将是作弊行为 当我尝试对 Google Vision API 运行休息调用时 我得到 responses error code 7 message imag
  • .NET 捕获、分组、匹配之间的差异

    我正在使用 NET Regex 类型制作一个小型应用程序 而 捕获 分组和匹配 类型完全让我困惑 我从未见过如此丑陋的解决方案 有人能为我解释一下它们的用法吗 非常感谢 这是一个比 Dav 引用的文档中的例子更简单的例子 string s0
  • 如何在 PowerQuery 中引用单元格的值

    我有多个 Power Query 查询 我想将这些查询提供给 Excel 文件中的单元格的值 在本例中 为源文件名的完整路径 有什么办法可以将其导入到 Power Query 中吗 这可以使用 PowerQuery 中的命名范围和自定义函数
  • 如何使用 TryParseHtmlString 将十六进制转换为颜色(RGBA)

    如何使用十六进制值更改 Unity 中的按钮颜色 我尝试了这个 但它不起作用 也许我在这里犯了一个错误 btn image color ColorUtility TryParseHtmlString DADADAFF out color 您
  • 如何通过 PHP 获取页面正文中的 URL 参数?

    在 Drupal 站点上 为页面正文内容启用了 PHP 代码 如何在 PHP 代码中获取参数及其值 例如 我想得到ref and 33002 from http example com node 1 ref 33002 在下面的代码中 我可
  • RPres 中的代码框大小和字体大小

    我过去经常使用 knitr 和 beamer 来制作幻灯片 我现在在 R 演示文稿中注意到一件事 代码框和代码字体大小的动态大小似乎都丢失了 使用 knit beamer 我可以轻松地使用 size 参数更改字体大小 例如 size foo
  • 如何将单个反斜杠放入 ES6 模板文字输出中?

    我正在努力获取 ES6 模板文字来生成单个反斜杠及其结果 gt s s gt s s gt s s gt s s gt u005Cs s 通过检查 Node REPL 上的值 而不是使用打印它 使用 Node 8 9 1 和 10 0 0
  • ios:如何使用 StoryBoards 从 ViewController 打开选项卡栏控制器

    我正在这样做 并且想要从登录页面打开选项卡栏控制器 如果是第一次并且已经登录 然后传递登录页面并在 Spalsh 之后打开选项卡栏控制器 意味着如果用户第一次登陆应用程序 时间顺序应该是这样的 1 飞溅 2 登录页面 3 成功登录后 打开具
  • django forms:在单个表单中编辑多组相关对象

    我正在尝试做一些应该很常见的事情 以单一形式添加 编辑一堆相关模型 例如 Visitor Details Select destinations and activities Miami swimming clubbing sunbathi
  • Url 编码和 HTML 编码之间的区别

    和有什么区别网址编码 and a HTML 编码 HTML 编码对 HTML 文档中使用的字符串中的特殊字符进行转义 以防止与 HTML 元素混淆 例如更改
  • Python 异步任务排序

    我有一个关于python中的事件循环如何的问题asyncio模块管理未完成的任务 考虑以下代码 import asyncio asyncio coroutine def a for i in range 0 3 print a str i
  • JavaFX 中的 HTML 编辑选项

    我希望将基于 Swing 的应用程序中使用的 HTML 编辑器替换为基于 JavaFX 的编辑器 据我所知 有两种可能的选择 1 使用JavaFX HTML 编辑器 虽然这对于功能来说非常好does有 它仍然缺乏其他几个功能 例如插入图像
  • 移动应用程序的 OAuth2 流程

    我们有一个预先存在的移动应用程序 用户将注册他的用户名和密码 目前我们有一个基于自定义令牌的身份验证 我们希望在不影响用户体验的情况下切换到 OAuth2 看起来资源所有者密码凭证对我们来说是最接近的流程 但是有很多建议反对使用它们 任何其