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

时间:2017-09-15 13:30:01

标签: azure authentication xamarin.ios azure-active-directory okta

这是我目前的情况:

  • Xamarin iOS移动应用(使用MobileServiceClient登录)
  • Azure Mobile/App ServiceASP.NET Web APIAzure AD身份验证

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

我发现这个网址是自定义身份验证的教程:wrap that event into a task

从这篇文章: https://adrianhall.github.io/develop-mobile-apps-with-csharp-and-azure/chapter2/custom/

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

感谢您的帮助,也许Azure团队的某个人可以启发我们这个主题,到目前为止我还没有看到任何文档或示例如何在他们的文档中进行。

客户端:

找到OAuth2和OpenID的工作库,用于与Okta集成: IdentityServer 4 as Identity Provider for Azure App Service
https://github.com/openid/AppAuth-iOS

使用Xamarin包装: https://github.com/openid/AppAuth-iOS/tree/master/Examples

使用Okta对客户端Auth进行了2次身份验证测试,效果很好。在找出App Service部分。

1 个答案:

答案 0 :(得分:0)

经过更多的研究和反复试验,我找到了适合我尝试做的正确组合。这里概述了它是什么:

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

有一点需要注意的是,我一路上绊倒了我:

  • 在客户端中,在通过OpenID Connect组件成功通过Okta进行身份验证后,您将收到包含id_tokenaccess_token的用户信息,尽管使用访问令牌似乎很自然用你的api调用发送到服务器,实际上不是这种情况,访问令牌应该只用于获取userinfo而不是经过验证的令牌,因为它会定期重新生成,另一方面是id令牌包含服务器需要验证令牌的标头和有效负载未被篡改的签名,这两个令牌之间的差异可以通过包含在其中的.分隔部分的数量来观察。令牌,访问令牌只有2个.分隔部分,标题和有效负载,id令牌有3个这样的部分,标题,有效负载和签名

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