我正在使用Xamarin制作iOS/Android应用程序(不是Xamarin.Forms,只是普通的Xamarin).我正在使用共享库而不是PCL.我希望我的应用程序调用Azure功能,但我不确定最安全/最好的方法来处理这个问题.我将它设置为"授权级别"的"功能".测试URL中包含"?code = ..."部分.我的印象是,如果我把它放在我的C#代码中,并且"代码"值暴露出从安全角度来看它被认为是一个坏主意.
我迷失了最安全/最好的处理方式.我已经读过在app.config中设置它也是一个坏主意.我找到了一些Web应用程序的参考资料,建议使用azure门户网站中提供的连接字符串,但由于这不是一个Web应用程序,我不确定我是如何在我的代码中实际检索这些值的(或者如果那是可能的话).
那么你如何建议我处理设置"代码"的值,以便我可以调用我的函数并避免安全问题?
更新:根据请求提供更多信息:我正在使用MSAL通过B2C活动目录对我的用户进行身份验证.我已经有了这部分工作,并收到了验证用户的令牌.
我刚刚在我的函数中启用了身份验证.
我的印象是,要从我的移动客户端调用我的函数,我必须创建一个新的HttpRequestMessage.我不确定那时我会放置什么来传递我的令牌.
为了确保我理解,您关心的是在iOS/Android应用中嵌入机密(?code = XXX值),对吗?如果是这样,是的,这通常被认为是不好的安全措施.最好假设任何可以下载你的应用程序的人都有能力发现这些秘密并以他们想要的方式使用它们.
从移动设备使用后端服务(如Azure功能)进行身份验证的推荐方法是使用交互式身份验证 - 即某种OAuth流.您可以自己构建它,也可以使用Azure Functions和Azure App Service的内置功能来帮助您(Azure功能构建在App Service之上).这是一个可能有用的资源:
https://docs.microsoft.com/en-us/azure/app-service/app-service-authentication-overview
https://contos.io/working-with-identity-in-an-azure-function-1a981e10b900#.vcjit3ntw
API密钥(代码)确实不适合您在外部分发的客户端使用,因此您的移动应用程序不应使用它.
这里最直接的选择是使用Azure功能内置的App Service身份验证功能,并在您的应用程序中实现身份验证流程,这样您就可以安全地对用户进行身份验证.
分享有关场景的更多信息可能有助于确定替代方案