使用 Xamarin Forms 使用自签名证书对 Azure AD 进行身份验证

Posted

技术标签:

【中文标题】使用 Xamarin Forms 使用自签名证书对 Azure AD 进行身份验证【英文标题】:Authenticating to Azure AD with Self Signed Certificate using Xamarin Forms 【发布时间】:2018-09-30 08:19:26 【问题描述】:

谁能告诉我如何使用天蓝色自签名证书在 Xamarin Forms iosandroid 应用程序中对 Azure AD 进行身份验证。

我正在尝试在没有凭据的情况下对 azure AD 进行身份验证,我已经提供了用于身份验证的证书,但我对身份验证部分不清楚。

我从 Microsoft 看到了这个 Guideline。但不知道如何在客户端使用 Xamarin 实现相同的功能。谁能帮我解决这个问题。

我是 Xamarin 和 Azure 的新手。因此,非常感谢以某些链接/示例形式提供的任何帮助。我在谷歌搜索了一个解决方案。但最终完全混乱。

【问题讨论】:

嘿 Nitha - 似乎这是关于 Azure AD 而不是 Azure AD B2C,对吗?它们是不同的产品...... 不确定。由于该应用程序将分发给不属于 AD 的人员,因此我不确定是否要删除 b2c 的范围。由于业务规则将仅限于企业对消费者。 【参考方案1】:

如前所述,机密客户端流应仅用于中间层应用程序和 devops。机密客户端包含应用程序机密,因此业界建议设备应用程序不应使用机密客户端流。

公共客户端应用程序通常在设备或台式机上运行。不信任它们可以安全地保存应用程序机密,因为它们不能保存配置时间机密。根据提供的信息(创建 Xamarin iOS 和 Android 应用),您可能需要查看 public client application authentication。

这是来自ADAL 的示例应用,其中包括 Xamarin iOS 和 Android。 这是指向我们 wiki 的链接,其中包含有关 confidential client flows 的更多信息。希望这会有所帮助!

【讨论】:

【参考方案2】:

您在问题中发布的指南适用于 Office 移动应用程序,例如 Microsoft Outlook 和 Microsoft Word 和 Exchange ActiveSync (EAS) 客户端。不适用于您开发的应用程序。

Azure Active Directory 允许应用程序使用certificate credentials 进行身份验证。

使用自签名证书就像使用client_credentails 流一样。

对于原生移动应用程序,我不建议您使用此流程。因为它不能直接代表用户,而移动应用程序是公共客户端,而不是机密客户端。它通常用于守护程序应用程序中。

如果你想使用它,你可以使用 ADAL 来实现:

这是Authenticating to Azure AD in daemon apps with certificates 的示例。您可以在 Program.cs 文件中查看如何将 ADAL 与证书凭据流一起使用。

希望这会有所帮助!

【讨论】:

Program.cs 不适合移动应用程序,对吧?您能推荐一些移动示例吗? 嗨,@NithaPaul。我不推荐移动应用使用此身份验证流程。因为 Moblile App 是一个公共客户端,而不是一个机密客户端。如果可能,您不应考虑在移动应用上使用此流程。

以上是关于使用 Xamarin Forms 使用自签名证书对 Azure AD 进行身份验证的主要内容,如果未能解决你的问题,请参考以下文章

ClientWebsocket SSL 证书验证失败

Xamarin Studio 无法识别配置文件

忽略 Xamarin.Forms (PCL) 中的 SSL 证书错误

Xamarin:捆绑签名的错误证书

Xamarin.Forms:将 ImageSource 转换为 Image Byte 数组

在 Xamarin.Forms 中为 ContentPage 使用自定义基类