Azure 移动应用服务/Xamarin iOS 客户端/Okta 身份提供程序示例

Azure Mobile App Service / Xamarin iOS client / Okta Identity Provider example

这是我目前的情况:

我想将此过程的身份验证部分修改为由 Okta 而不是 Azure AD 处理。我如何设置 Okta 或类似于 Okta 的任何其他第 3 方 Identity Provider Service 作为我的移动应用程序和 api 网络服务的 ipd? Azure 声称您可以使用任何支持身份验证的第 3 方提供程序,但我看不出有任何方法可以将此类提供程序集成到 Azure 门户中。

我在自定义身份验证教程中找到了这个 url:https://adrianhall.github.io/develop-mobile-apps-with-csharp-and-azure/chapter2/custom/

来自这个post: IdentityServer 4 as Identity Provider for Azure App Service

这真的是唯一的方法吗?我真的宁愿继续使用服务器流 MobileServiceClient 并将 Azure 配置为使用第 3 方 OAuth 身份提供程序,有人有关于如何执行此操作的示例或其他信息吗?

谢谢你的帮助,也许 Azure 团队的人可以就这个话题给我们启发,到目前为止我还没有在他们的文档中看到任何文档或如何做的例子。

客户:

找到一个适用于 OAuth2 和 OpenID 的工作库,可用于与 Okta 集成: https://github.com/openid/AppAuth-iOS
https://github.com/openid/AppAuth-iOS/tree/master/Examples

使用 Xamarin 包装器: https://github.com/xamarin/XamarinComponents/tree/master/XPlat/OpenId

使用 Okta 对具有 2 因素身份验证的客户端 Auth 进行了测试,效果很好。了解应用服务部分。

经过更多的研究和反复试验,我找到了适合我想要做的事情的正确组合。这是它的概要:

Okta(身份提供者)
  • 设置一个带有 Implicit (Hybrid) 授权的本机应用程序
手机客户端 服务器/网络 Api
  • 将我的 asp.net web api 网络服务转换为 asp.net core web api 网络服务,这样我就可以使用最新的 owin 中间件来验证在 header 调用安全端点时提交的 jwt 承载令牌,这里是如何使用 Okta 进行设置的示例:https://developer.okta.com/quickstart/#/ios/dotnet/aspnetcore

一路上有件事让我绊倒了:

  • 在客户端中,通过 OpenID Connect 组件成功验证 Okta 后,您将收到包含 id_tokenaccess_token 的用户信息,尽管使用访问令牌与您的 api 调用一起发送到服务器,实际上并非如此,访问令牌应该仅用于获取用户信息而不是经过验证的令牌,因为它会定期重新生成,id 令牌在另一方面包含服务器需要验证 header 和令牌的有效负载未被篡改的签名,这两个令牌之间的差异可以通过 . 分隔的数量来观察令牌中包含的部分,访问令牌只有 2 个 . 分隔部分,header 和有效负载,id 令牌有 3 个这样的部分,header,有效负载和签名

在此处阅读有关 jwt 令牌的更多信息:https://auth0.com/learn/json-web-tokens/