Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在没有用户凭据的情况下从Azure AD获取访问令牌_C#_Azure_Xamarin.forms_Adal - Fatal编程技术网

C# 在没有用户凭据的情况下从Azure AD获取访问令牌

C# 在没有用户凭据的情况下从Azure AD获取访问令牌,c#,azure,xamarin.forms,adal,C#,Azure,Xamarin.forms,Adal,我正在使用ADAL登录到我的应用程序,该应用程序是在Xamarin.Forms中针对Azure AD开发的。这一切都很好,但是我现在希望能够注册一个新用户,并且要做到这一点,需要一个访问令牌来传递给我的一个方法的构造函数 但是,由于用户尚未注册,我需要能够从Azure AD获得访问令牌,而不需要实际提供任何用户凭据。有人告诉我,在一个普通的web应用程序中,我可以发送客户端id和应用程序密钥,这样Azure AD就可以知道我是谁,然后向我发回一个访问令牌,但我不知道如何在一个跨平台的Xamari

我正在使用ADAL登录到我的应用程序,该应用程序是在Xamarin.Forms中针对Azure AD开发的。这一切都很好,但是我现在希望能够注册一个新用户,并且要做到这一点,需要一个访问令牌来传递给我的一个方法的构造函数

但是,由于用户尚未注册,我需要能够从Azure AD获得访问令牌,而不需要实际提供任何用户凭据。有人告诉我,在一个普通的web应用程序中,我可以发送客户端id和应用程序密钥,这样Azure AD就可以知道我是谁,然后向我发回一个访问令牌,但我不知道如何在一个跨平台的Xamarin应用程序中实现这一点

如果有人以前遇到过这种情况,我们将非常感谢您的帮助


谢谢。

不建议在本机应用程序中使用应用程序密钥,无论您使用哪个开发堆栈来实现它。原因是,一般来说,设备不应该被信任的秘密。此外,秘密分发是复杂的(你不能将其嵌入到应用程序代码中)。 因此,Xamarin的ADAL(以及本机应用程序中使用的所有其他ADAL风格)没有公开任何使用应用程序密钥获取令牌的方法。 从antive应用程序中,您确实需要引导与用户身份的安全通信。一旦你有了它,你就可以在服务器端做各种有趣的事情(例如,你可以在服务器上运行API,作为应用程序获取令牌)。 嗯
V.

因此,如果我使用用户身份保护连接,这是否意味着我可以从Azure AD获取访问令牌,而无需输入或发送任何用户凭据?从本机应用程序到web API,您需要以用户身份进行身份验证才能获得令牌。一旦您的API执行,它就可以在服务器端获得新的令牌,而无需用户干预——但是,如果没有初始令牌,您就无法确保对API的调用安全,并且在本机客户端上强调必须从用户处获得令牌。有关Azure AD supportsOk中令牌获取模式的列表,请参阅。因此,如果我无法在未经用户身份验证的情况下获取令牌,我如何在Azure AD中注册新用户?如果我正在注册一个新用户,他们还没有通过API验证所需的凭据,或者在为我的应用程序注册一个新用户时我不需要传递令牌吗?您可以通过web应用程序进行注册,该应用程序可以拥有自己的凭据并在没有用户的情况下获得令牌。这不是在设备上运行的ap的选项。