当前位置: 首页 > 编程语言 > C#

AuthenticationContext.AcquireTokenAsync是C#的新手分享

时间:2023-04-11 01:58:26 C#

C#学习教程:AuthenticationContext.AcquireTokenAsync是C#的新功能无论我做什么,它似乎都失败了——有没有人有一个可行的例子?谢谢大家,我打电话给GetAToken().Wait();.方法是:publicasyncTaskGetAToken(){//认证参数stringclientID="**********";字符串用户名=“”;字符串密码=“”;字符串目录名="";ClientCredentialcc=newClientCredential(clientID,password);varauthenticationContext=newAuthenticationContext("https://login.windows.net/"+directoryName);AuthenticationResult结果=等待authenticationContext。AcquireTokenAsync("https://management.core.windows.net/",cc);if(result==null){thrownewInvalidOperationException("获取JWT令牌失败");}stringtoken=result.AccessToken;返回令牌;所以不确定您是在Android、iOS上还是在Xamarin.Forms上执行此操作。下面是我将如何使用ADAL和Azure进行身份验证(代码正处于我的工作中):在Android上:publicasyncTaskAuthenticate(Activitycontext,stringauthority,stringresource,stringclientId,stringreturnUri){varauthContext=newAuthenticationContext(权限);如果(authContext.TokenCache.ReadItems().Any())authContext=newAuthenticationContext(authContext.TokenCache.ReadItems().First().Authority);varuri=newUri(returnUri);varplatformParams=newPlatformParameters(context);try{varauthResult=awaitauthContext.AcquireTokenAsync(resource,clientId,uri,platformParams);返回授权结果;}catch(AdalExceptione){返回null;}}在iOS上:publicasyncTaskAuthenticate(UIViewControllercontroller,stringauthority,stringresource,stringclientId,stringreturnUri){varauthContext=newAuthenticationContext(authority);如果(authContext.TokenCache.ReadItems().Any())authContext=newAuthenticationContext(authContext.TokenCache.ReadItems().First().Authori泰);varcontroller=UIApplication.SharedApplication.KeyWindow.RootViewController;varuri=newUri(returnUri);varplatformParams=newPlatformParameters(控制器);try{varauthResult=awaitauthContext.AcquireTokenAsync(resource,clientId,uri,platformParams);返回授权结果;}catch(AdalExceptione){返回null;}}在UWP上:publicasyncTaskAuthenticate(stringauthority,stringresource,stringclientId,stringreturnUri){varauthContext=newAuthenticationContext(authority);如果(authContext.TokenCache.ReadItems().Any())authContext=newAuthenticationContext(authContext.TokenCache.ReadItems().First().Authority);varuri=newUri(returnUri);varplatformParams=newPlatformParameters(PromptBehavior.Auto);try{varauthResult=awaitauthContext.AcquireTokenAsync(resource,clientId,uri,platformParams);返回授权结果;}catch(AdalExceptione){返回null;}}我传入上记方法的变量:stringauthority="https://login.windows.net/common";stringResourceID="BackendClientId";//Backend(webapp)stringclientId="NativeAppClientId";//nativeappstringreturnUri="https://{MyAzureSite}.azurewebsites.net/.auth/login/done";如果您想在Xamarin.Forms中执行此操作,下面是指向我的GitHub解决方案的链接,我在其中通过DependencyService公开了这些方法,希望这对您有所帮助!如果您的回复中有任何错误,请检查确保您在Azure中正确设置了权限。我这样做。另一个很好的资源是AdrianHall的Xamarin/Azure图书编辑器:添加UWP内容如果您所要做的只是像您一样调用AzureAPI,那么您应该做一些不同的事情.在AzureAD中创建一个有权限访问AzureAPI的应用程序如果你想调用服务管理API,添加它作为权限你也可以使用管理证书如果你想调用资源管理API,请添加所需的权限通过新门户的服务主体如果您为服务管理API选择了委托方法(第一个选项),则您将必须:让用户使用授权代码授权流验证或使用密码授予流向AzureAD进行身份验证获取访问令牌(您可以在另一个答案中查看此示例)如果您选择管理证书或授予服务主体权限,则可以使用客户端凭据授予流程直接从AzureAD获取访问令牌最后,您将始终使用可用于调用API的访问令牌。以上是C#学习教程:AuthenticationContext.AcquireTokenAsync都是C#新手分享的。如果对大家有用,需要进一步了解C#学习教程,希望大家多加关注——本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: