- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我对下一个技术解决方案的正确模式应该是什么表示怀疑。我需要通过读取 QR 码来验证移动应用程序中的用户,该用户之前已在 Web 应用程序中进行过身份验证。
用例包括用户使用位于 Intranet 中的 Web 应用程序,但需要能够从将连接到 Internet 的移动设备上传图像。移动应用程序将使用通过 API 网关公开在互联网上的公共(public) API。API 网关将连接到后端以上传图像。作为一项要求,当用户需要使用移动设备拍摄和上传图像时,他们不应再次进行身份验证,因为他们在 Web 应用程序中有一个打开的 session ,只需使用二维码对设备进行身份验证即可。从逻辑上讲,QR 不会使用用户的凭据。
我的想法是通过以下流程使用 Oauth 2.0 来验证移动设备:
我的问题是是否是正确的方案,还是有其他标准方案。
谢谢!!
最佳答案
您的方案可以工作,但考虑到您可以将新生成的授权 token 从已经授权的设备直接传输到另一台设备(通过摄像头读取的二维码)这一事实,它没有发挥其最大的安全潜力;这个事实会使第 3 步和第 4 步成为一个不必要的漏洞(这也是一种冗余,已经有一个 token !,为什么还要另一个?);
以下替代方案以及良好的密码学可以使后来的授权设备连接几乎不可能被入侵。这个想法是通过在步骤 5 中发送数据之前添加对称加密层并使用通过另一种介质交换的 key (已经授权的设备和服务器)加密数据永远不会暴露;
第三步替换:读取授权 token ;
step 4 replacement:用服务器检查授权 token (而不是 token 本身)的安全哈希派生,看它是否有效;
token0=read_auth_token_from_camera()
public_token=hash_function(token0) //the useless exposed token
if(check_token_with_server_for_authenticity(public_token)==true)
continue_to_step_5() //it's authorized
else
handle_the_scenario()
第 5 步替换:使用授权 token 的另一个哈希派生加密您的请求和授权 token ,然后调用服务器 API;
token2=another_hash_function(token0)
request="i am top secret data"
encryption_key=token0
encrypted_request=encryption_function( token2 + request , encryption_key)
send_to_server( public_token+encrypted_request)
//notice that token2 is unknown to the intruder because its encrypted,but it is known to the server; hence the authenticity of each request can be checked by the server;
它如何更安全:在这种替代方式中,实际的授权 token 永远不会在服务器和新客户端之间真正交换;因此,如果入侵者可以假设地破坏 SSl/TLS 层并捕获公共(public) token ,则入侵者将无法代表您发送任何请求或修改请求中的数据;
关于java - 在 Web 应用程序中使用 QR 进行移动身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53959819/
我正在使用SQL Server 2008 R2,并且想创建一个触发器。 对于每个添加(仅添加),将像这样更新一列: ABC-CurrentYear-AutoIncrementCode 例子: ABC-
是否可以在显示最终一致性的数据存储中创建/存储用户帐户? 似乎不可能在没有一堆架构复杂性的情况下管理帐户创建,以避免可能发生具有相同 UID(例如电子邮件地址)的两个帐户的情况? 最终一致性存储的用户
您好, 我有一个带有 Identity 的 .NetCore MVC APP并使用 this指导我能够创建自定义用户验证器。 public class UserDomainValidator : IU
这与以下问题相同:HiLo or identity? 我们以本站的数据库为例。 假设该站点具有以下表格: 帖子。 投票。 注释。 使用它的最佳策略是什么: 身份 - 这是更常见的。 或者 HiLo -
我想将 Blazor Server 与 ASP.NET Identity 一起使用。但我需要使用 PostgreSQL 作为用户/角色存储,因为它在 AWS 中。 它不使用 EF,这是我需要的。 我创
我正在开发一个 .NET 应用程序,它可以使用 Graph API 代表用户发送电子邮件。 提示用户对应用程序进行授权;然后使用获取的访问 token 来调用 Graph API。刷新 token 用
我使用 ASP.NET 身份和 ClaimsIdentity 来验证我的用户。当用户通过身份验证时,属性 User.Identity 包含一个 ClaimsIdentity 实例。 但是,在登录请求期
所以我在两台机器上都安装了 CYGWIN。 如果我这样做,它会起作用: ssh -i desktop_rsa root@remoteserver 这需要我输入密码 ssh root@remoteser
我尝试在 mac osx 上的终端中通过 telnet 连接到 TOR 并请求新身份,但它不起作用,我总是收到此错误消息: Trying 127.0.0.1... telnet: connect to
我正在开发一个 .NET 应用程序,它可以使用 Graph API 代表用户发送电子邮件。 提示用户对应用程序进行授权;然后使用获取的访问 token 来调用 Graph API。刷新 token 用
我正在开发一项服务,客户可以在其中注册他们的 webhook URL,我将发送有关已注册 URL 的更新。为了安全起见,我想让客户端(接收方)识别是我(服务器)向他们发送请求。 Facebook和 G
在 Haskell 中,有没有办法测试两个 IORef 是否相同?我正在寻找这样的东西: IORef a -> IORef a -> IO Bool 例如,如果您想可视化由 IORef 组成的图形,这
我是 .NET、MVC 和身份框架的新手。我注意到身份框架允许通过注释保护单个 Controller 操作。 [Authorize] public ActionResult Edit(int? Id)
我有一列具有身份的列,其计数为19546542,我想在删除所有数据后将其重置。我需要类似ms sql中的'dbcc checkident'这样的内容,但在Oracle中 最佳答案 在Oracle 12
这是我用来创建 session 以发送电子邮件的代码: props.put("mail.smtp.auth", "true"); props.put("mail.smtp.starttls.enabl
我想了解 [AllowAnonymous] 标签的工作原理。 我有以下方法 [HttpGet] public ActionResult Add() { return View(); } 当我没
在使用沙盒测试环境时,PayPal 身份 token 对某些人显示而不对其他人显示的原因是否有任何原因。 我在英国使用 API,终生无法生成或找到 token 。 我已经遵循协议(protocol)并
我对非常简单的事情有一些疑问:IDENTITY。我尝试在 phpMyAdmin 中创建表: CREATE TABLE IF NOT EXISTS typEventu ( typEventu
习语 #1 和 #5 是 FinnAPL Idiom Library两者具有相同的名称:“Progressive index of (without replacement)”: ((⍴X)⍴⍋⍋X⍳
当我第一次在 TFS 中设置时,我的公司拼错了我的用户名。此后他们将其更改为正确的拼写,但该更改显然未反射(reflect)在 TFS 中。当我尝试 checkin 更改时,出现此错误: 有没有一种方
我是一名优秀的程序员,十分优秀!