问题标签 [appauth]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
176 浏览

ios - 是否可以在 Web 和 iOS 应用程序之间共享会话?

我在我的 iOS 应用程序中使用 AppAuth 进行授权。具体来说,我正在使用授权代码流程。

现在借助 URL 架构,当用户单击 Web 应用程序上的某个链接时,我将打开 iOS 应用程序。理想情况下,我想在用户单击链接后自动从 Web 到 iOS 应用程序对用户进行身份验证。

这可能吗?

当前授权流程使用OIDExternalUserAgentSession

0 投票
1 回答
915 浏览

react-native - [错误:ExpoAppAuth.Get Auth:JSON 反序列化错误]

使用“expo-app-auth”中的 AppAuth 时出错;

当我尝试 authi 得到以下错误:[错误:ExpoAppAuth.Get Auth:JSON 反序列化错误]

是不是和配置有关?

0 投票
1 回答
313 浏览

react-native - 从 iOS 中的外部 Web 浏览器中剥离的 OAuth2/Azure AD B2C 参数

我已经使用 React Native for Android 开发了一个应用程序。现在我有一台 Mac,我正在为 iPhone 移植该应用程序。除了身份验证之外,iPhone 似乎工作正常。

对于身份验证,我使用 React Native App Auth(RNAppAuth) 和 Azure AD B2C。我按照 AppAuth-IOS 和 RNAppAuth 文档中的说明完成并设置了 RNAppAuth。我相信一切都适合 Azure,因为它可以在我的 Android 应用程序上完美运行。

所以这就是问题所在......当应用程序登录时,它会尝试在另一个浏览器中打开授权页面。我给它这个端点(注意:我用示例替换了我的域)......

我得到这个提示...

在此处输入图像描述

当我单击Continue时,它​​会导航到通用 Microsoft 登录,而不是我使用我的 policy parameter 指定的登录p=B2C_1_SigninSignup1。事实上,所有参数似乎都被删除了,并且我看到了一个不接受我之前设置的任何凭据的登录表单。

网上搜到的很少,所以找大家帮忙。

有没有人遇到过这个?如果是这样,我该如何解决?

提前致谢。

0 投票
0 回答
165 浏览

google-oauth - Mac Catalyst App 上的 Google OAuth2:使用 refresh_token 交换授权代码时出现“invalid_grant”

我们有一个应用程序可以从不同的客户端成功执行 Google 登录:Web、iOS 应用程序、Android 应用程序。我们现在正尝试在我们的 iOS 应用程序的Mac Catalyst版本上集成 Google 登录。

我们使用混合流,我们在客户端生成授权码并在服务器上交换它以获得访问和刷新令牌。

我找到了这个库https://github.com/elsesiy/GAppAuth并且我正在使用与 iOS 应用程序相同的凭据。

通过自定义方案登录后重定向到应用程序工作正常,我能够获得授权码。

但是当我与我的服务器共享授权码时,我在请求交换身份验证码以获取 access_token 和 refresh_token 时收到错误:

参数:

  • 代码(由客户发送)
  • client_id(服务器客户端 ID)
  • client_secret(服务器密码)
  • grant_type="授权码"

未为本机客户端请求添加 redirect_uri。

回复:

400 {'error': 'invalid_grant', 'error_description': 'Bad Request'}

请注意,完全相同的流程适用于 iOS。我还检查了不同类型的凭据(本机客户端,类型:其他)

关于出了什么问题以及如何解决此问题的任何想法?

我怀疑 Google 登录库的某些功能在 GAppAuth 中未实现(请参阅https://github.com/openid/AppAuth-Android/issues/293)。

0 投票
1 回答
128 浏览

android - AppAuth 身份验证

我想为我的 Android 应用程序使用AppAuth 。

但根据那里的文档,他们提到“由于可用性和安全原因,明确不支持 WebView”。

由于我们的应用程序要求,我需要在应用程序内进行身份验证,并且不想重定向到手机上的某个浏览器。

有没有办法或任何示例示例来做同样的事情。

我在 Play 商店中看到了很多应用程序,这些应用程序通过 Google、Facebook 进行身份验证,而不是重定向到默认浏览器。它不会重定向,而是在当前活动的顶部打开弹出窗口并进行身份验证。

Zomato 应用程序”示例

在此处输入图像描述

0 投票
1 回答
514 浏览

ios - 为 iOS 构建 React Native 失败:代码签名对 AppAuth 无效

我正在尝试将 react-native-app-auth 集成到我的 React Native 应用程序中。它适用于 Android,但是当尝试在 iOS 上构建项目时,我得到以下信息:

弹出之后,继续运行应用程序会导致它崩溃。

反应本机信息:

.a 库和 AppAuth 的 .framework 都在我正在构建的目标的链接列表中,但 .framework 文件的图标颜色更像是淡黄色,而 .框架文件链接。这是我注意到的唯一可能意味着什么的事情。我也尝试过多次删除和重新安装我的 pod,但也没有任何运气。我已经尝试过新的和旧的构建系统。我不确定还能尝试什么。

0 投票
0 回答
265 浏览

ios - 如何在 AppAuth iOS 中将“id_token”作为 responseType 而不是“code”传递来获取令牌

我正在使用 AppAuth 库进行身份验证和检索令牌,如 response_type “id_token”,但该库给出以下错误:

不支持 response_type “id_token”。AppAuth 仅支持“代码”response_type。

我想使用“id_token”作为 response_type 而不是“code”,但我没有任何出路。

0 投票
0 回答
95 浏览

ios - AppAuth iOS 在两个应用程序之间共享访问令牌

我目前有一个快速应用程序,它使用 AppAuth 登录并授权对后端服务器的 API 调用。

我想开发第二个应用程序,但让它共享访问令牌:即,如果您已经登录到第一个应用程序,那么您不需要登录到第二个应用程序 - 它只是让您登录;反之亦然。

这可能吗?如果可以,涉及哪些步骤?我正在使用 Xcode 11.3.1 和 Swift 5

0 投票
1 回答
2150 浏览

ios - 在 iOS 上的 Flutter 中使用 IdentityServer4 调用 AppAuth 注销/结束会话端点

我正在使用 Flutter 中的flutter_appauth包来处理针对 IdentityServer4 的授权代码流,并且无法找到/endsession在 iOS 中调用端点的方法。

为了了解我想要做什么,这是我使用url_launcher包的工作 Android 实现:

使用相同的代码,iOS 只报告一般PlatformException情况,没有关于原因的其他详细信息,尽管该异常肯定与通过尝试启动 url 完全绕过 AppAuth 有关。

此 GitHub 评论中的解决方案似乎可以使用 OKTA,但是在使用 IdentityServer4 时,我收到以下异常,该异常会立即终止 Flutter 应用程序:

/endsession考虑到我的端点没有返回授权响应,这似乎是有道理的。

无论如何,使用结束会话 URL 调用授权端点的解决方案充其量是一种 hack,但它似乎是这样做的“公认”方式。

我可以找到的所有使用 AppAuth 的文档都说可以通过在应用程序中“忘记”令牌来实现注销,但是由于浏览器保留了身份验证 cookie,因此会自动重新登录。用户没有机会选择其他帐户。

另外值得注意的是,这并不特定于 Flutter、flutter_appauth包或 IdentityServer4。对本机 AppAuth-iOS 包的此评论提出了与上述相同解决方案相同的问题。

绝对必须可以在 iOS 上注销(并因此删除浏览器 cookie),但我完全不知道如何实现它。

0 投票
1 回答
1171 浏览

android - '刷新令牌过期异常' - AppAuth Android

我在我的 android 应用程序中使用 appAuth 和 Keycloak 进行身份验证。大约 25 分钟后,访问令牌过期。当我在这段时间之后尝试刷新令牌时,我收到此错误:

为了刷新令牌,我调用 performActionWithFreshTokens 并传入我之前从 TokenResponse 收到的 refreshToken。

在决定将 refreshToken 作为函数中的附加参数传递之前,我认为我调用 performActionWithFreshTokens 的事实会自动解决此异常。我仍然得到错误。然后我决定将 refreshToken 作为参数传递,但我仍然得到异常并且返回的 accessToken 和 idToken 为空。

我不确定如何解决此问题。有没有其他人遇到过这个问题?谢谢。