Azure 移动应用服务/Xamarin iOS 客户端/Okta 身份提供程序示例
Azure Mobile App Service / Xamarin iOS client / Okta Identity Provider example
这是我目前的情况:
Xamarin iOS
移动应用程序(使用 MobileServiceClient
登录)
Azure Mobile/App Service
(ASP.NET Web API
) 具有 Azure AD
身份验证
我想将此过程的身份验证部分修改为由 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)
授权的本机应用程序
手机客户端
- 为 Xamarin.iOS 使用 OpenID Connect 组件,在我的例子中 https://github.com/openid/AppAuth-iOS
服务器/网络 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_token
和 access_token
的用户信息,尽管使用访问令牌与您的 api 调用一起发送到服务器,实际上并非如此,访问令牌应该仅用于获取用户信息而不是经过验证的令牌,因为它会定期重新生成,id 令牌在另一方面包含服务器需要验证 header 和令牌的有效负载未被篡改的签名,这两个令牌之间的差异可以通过 .
分隔的数量来观察令牌中包含的部分,访问令牌只有 2 个 .
分隔部分,header 和有效负载,id 令牌有 3 个这样的部分,header,有效负载和签名
在此处阅读有关 jwt 令牌的更多信息:https://auth0.com/learn/json-web-tokens/
这是我目前的情况:
Xamarin iOS
移动应用程序(使用MobileServiceClient
登录)Azure Mobile/App Service
(ASP.NET Web API
) 具有Azure AD
身份验证
我想将此过程的身份验证部分修改为由 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)
授权的本机应用程序
- 为 Xamarin.iOS 使用 OpenID Connect 组件,在我的例子中 https://github.com/openid/AppAuth-iOS
- 将我的
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_token
和access_token
的用户信息,尽管使用访问令牌与您的 api 调用一起发送到服务器,实际上并非如此,访问令牌应该仅用于获取用户信息而不是经过验证的令牌,因为它会定期重新生成,id 令牌在另一方面包含服务器需要验证 header 和令牌的有效负载未被篡改的签名,这两个令牌之间的差异可以通过.
分隔的数量来观察令牌中包含的部分,访问令牌只有 2 个.
分隔部分,header 和有效负载,id 令牌有 3 个这样的部分,header,有效负载和签名
在此处阅读有关 jwt 令牌的更多信息:https://auth0.com/learn/json-web-tokens/