问题标签 [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.
android - Facebook 应用程序域 Android
尝试使用 Facebook 登录时,我不断收到以下屏幕。我正在尝试使用 AppAuth for Android ( https://github.com/openid/AppAuth-Android ) 它提到了一个域 URL,但它是一个 Android 应用程序。尝试使用 OAuth2 规范。使用身份验证端点“ https://www.facebook.com/dialog/oauth ”和令牌端点“ https://graph.facebook.com/v2.10/oauth/access_token ”。任何想法,它可能是什么。谢谢您的帮助。
ios - 使用 AppAuth 和 Okta 时 iOS 上的身份验证问题
我有一个基于 AppAuth-iOS 示例(https://github.com/openid/AppAuth-iOS)和 Okta OAuth 示例(https://github.com/oktadeveloper/okta-openidconnect )的简单 iOS Swift 应用程序-appauth-ios)。我没有使用服务发现,也没有使用自动令牌获取(即不使用 authStateByPresentingAuthorizationRequest)。
我的示例适用于 Azure AD,但不适用于 Okta。我能够登录并通过身份验证并重定向回我的移动应用程序 (AppDelegate.application()),但随后流程不会返回到我的 OIDAuthorizationService.present() 完成块。
这是一些代码:
我可以重写代码以使用 authStateByPresentingAuthorizationRequest() 来查看它是否有效,但有点怀疑,因为此代码适用于 Azure AD。有什么建议么?
更新 1 我忘了提到我有一个工作的 Android/Java 示例,它与相同的 Okta 定义背道而驰,并且像魅力一样工作。
更新 2 我确实重写了代码以针对 Okta 使用authStateByPresentingAuthorizationRequest()并且得到了相同的结果(即在重定向回我的应用程序后卡住了)。我对 Azure AD 进行了测试,它工作正常。
openid - 使用 AppAuth 在 swift4 中进行身份验证会显示附加警报
我正在使用AppAuth
0.90.0 进行身份验证,使用用户可以登录的外部身份验证服务器进行身份验证,以便应用程序接收适当的身份验证令牌。从最近(升级到 swift 4 之后)我在发送到身份验证服务器之前收到以下警报:
“应用名称”想使用“externalAuthentication.com”登录”
这允许应用程序和网站共享有关您的信息。
是否有人遇到过同样的问题和/或有解决方案,因此用户无需在每次向该服务器发出请求时按继续?
javascript - Android 上 Chrome 61+ 中的导航被阻止错误
我正在构建一个登录页面,在提交和验证用户凭据后,它会打开一个本地移动应用程序。直到上周,我通过使用自定义方案 URI 让这个跨移动操作系统工作,例如:
登录页面显示在 IABT 中,是 In App Browser Tab 的缩写。
然而,自从 Chrome 61 版本发布以来,这种方法在 Android 上被打破了。Chrome 会阻止重定向,因为没有与重定向相关的明显用户操作(有关此问题的更多信息,请参见此处)。
因此,在执行上面的代码时,我会在控制台中收到警告:
导航被阻止:customscheme:/action?param1=val1¶m2=val2
我也尝试将自定义方案 url 更新为意图 url,但无济于事。谷歌搜索这个问题并不能轻易提供一个明确的解决方案,所以我希望任何人都可以帮助我。
编辑:尝试用以下场景重现问题(尽可能接近现实生活场景):
- IABT 显示一个带有单个按钮的页面
- 单击该按钮会触发对模拟端点的 jsonp 调用
- 执行 JSONP 回调并触发自定义事件
- 触发自定义事件的事件处理程序并将浏览器重定向到另一个模拟端点
- 该模拟端点以 302 响应自定义深度链接方案。
唉,这似乎奏效了。我原以为包含 jsonp 调用会导致 Chrome 阻止最终重定向,因为它无法将其识别为用户发起的操作。
编辑 2:设法获得可重现的场景。我们设置了一个虚拟端点,根据请求只需
302
在 Location 标头中返回带有自定义方案的一个。这在所有尝试中都被阻止,除了第一个尝试。这个事实仍然令人难以置信。我们正在使用AppAuth for Android应用程序来测试设置。
我正在为端点打开一个自定义选项卡,如下所示。代码取自这个答案。
ios - AppAuth iOS。用户在我自己的 OAuth2 服务器中注册帐户后如何保存令牌信息
我有一个 iOS 应用程序和一个用 Spring 编写的后端,实现了 OAuth2 mechanizm。
我的后端有一个signup
端点,它接受一些用户数据并返回一个 OAuth2 响应,例如
之后我想保存OIDAuthState
在我的钥匙串中,所以我执行以下操作:
一切正常,但是令牌过期时我遇到了问题。应用程序调用后端并且 AppAuth 无法刷新令牌:
我可以看到,对象中不存在刷新令牌OIDAuthState
。我检查了OIDAuthState
from的初始化,OIDAuthorizationResponse
发现在这种情况下没有分配令牌。
任何人都可以帮助我OIDAuthState
从后端收到的 OAuth 响应中保存吗?还是我做错了什么?
谢谢,
奥斯曼
ios - iOS 上的 Okta SSO(跨应用重启和应用之间)
我正在使用 Okta 和okta-openidconnect-appauth-ios测试程序(项目名称 OpenIDConnectSwift)进行试验,以了解 Okta SSO 在 iOS 11 上的工作原理。这个应用程序利用了 OIDC 的 AppAuth 库。
我已经设置了测试程序,并且能够登录并获取令牌(身份验证令牌、刷新令牌、ID 令牌),以及查看用户信息等。
但是,当我重新启动应用程序或尝试从链接到相同客户端 ID 的另一个应用程序执行相同操作时,我只看到用户名字段已填写,密码为空白。
我的印象是在这些情况下我应该看到 SSO(这意味着我不必重新输入密码),因为全局存储了一些 cookie(可通过 iOS 11 上的 SFAuthenticationSession 访问)
我需要特别配置什么来支持这个吗?理想情况下,我想测试 OIDC 流程,但如果我可以跨应用程序实现 SSO 和应用程序重启,任何其他流程都可以。
与其从头开始编写应用程序,我希望使用这个测试应用程序(稍作调整和/或配置更改),或者找到另一个可以使用 Okta 在 iOS 11 上演示 SSO 的应用程序。
更新:我仍然在 11.2.5 上看到问题,有人让它工作吗?
android - AppAuth、重定向 URI、Stackexchange、Instagram API
我想进行 OAuth2 授权。
我使用:实现“net.openid:appauth:0.7.0”
我研究了许多示例(Google Codelabs、AppAuth 等)。
我还研究了RFC 8252。
我想将此应用于Stackexchange和Instagram OAuth API。
我只了解一件事:自定义 REDIRECT_URI,如“com.example.auth:/oauth2callback”,它不再适用于 SE 和 Instagram。
我尝试了不同的方案,但结果相同。
我的问题是 RedirectUriReceiverActivity 没有启动。
任何人都可以为 SE 或 Insta OAuth API 指定正确的重定向 URI 设置(用于 Android 应用程序和 AppAuth 库)吗?
清单(我在这里尝试了很多选项)
MainActivity(我为 REDIRECT_URI 尝试了许多选项)
android - AppAuth 未知 url 方案
我在使用 AppAuth 处理从 webview 重定向回应用程序时遇到问题。我不断收到 net::ERR_UNKNOWN_URL_SCHEME。在我的 build.gradle 中,我在 defaultConfig 中声明了清单占位符
在清单中我得到了 RedirectUriReceiverActivity
com.example.mc2017 应该是我正在听的方案。谁能指出错误在哪里?
android - 在 Android 应用中使用 OAuth2 获取 Strava API 的令牌
我想在我的 Android 应用中启用“将活动上传到 Strava”。为此,我需要一个令牌。Strava 使用 OAuth2,我认为在 Web 应用程序中进行身份验证和获取令牌真的不是什么大问题。
但是当在原生 Android 应用程序中使用它时,我必须在WebView
. 如果用户选择“使用 Google 登录”,那么 Google 身份验证会创建一个 403,因为它拒绝在 WebView 内进行登录,请参阅这篇文章。
所以我遵循了使用AppAuth for Android的建议。他们声称该过程仅适用于准备与本机应用程序通信的 OAuth 服务器:
通常,AppAuth 可以与任何支持本机应用程序的授权服务器 (AS) 一起使用,无论是通过自定义 URI 方案重定向还是应用程序链接。假设所有客户端都是基于 Web 或要求客户端保持客户端机密的机密性的 AS 可能无法正常工作。
在再花几个小时寻找解决方案(更像是反复试验)之前,我决定问你:
是否可以对 Strava 用户进行身份验证并获得所需的令牌 ( Authenticate: Bearer abc9897...
)?
- 通过“使用 Google 登录”
- 通过“使用 Facebook 登录”
- 通过用户名+密码
我看到的问题是:至少在使用 Google 登录时,涉及 2 个 OAuth 身份验证过程,它必须在浏览器中运行,而不是在 WebView 中运行。如何拦截这两个进程并在一天结束时获得令牌?