首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何无秘密地从公共客户端桌面应用程序(Uno-Platform)调用受保护的WEBAPI

如何无秘密地从公共客户端桌面应用程序(Uno-Platform)调用受保护的WEBAPI
EN

Stack Overflow用户
提问于 2022-08-25 10:56:03
回答 1查看 85关注 0票数 0

我们正在使用uno平台开发公共客户端桌面应用程序,我们有一个要求调用我们的WEBAPI之一,它是由Azure AD保护的。

使用客户端凭据流在公共客户端应用程序中生成访问令牌,并且在标头中作为调用WEPAPI的承载令牌传递相同的凭证流。

用于在PublicClient应用程序中生成令牌的代码:

代码语言:javascript
复制
 string authority = String.Format("https://login.microsoftonline.com/xxxxxxbf-86f1-xxxx-xxxx-2d7cd011db47");
                
string secret = "xxxxxxxx7eCXUMxxxF7GIxxxxxxxvSQkIcxxxxx";
Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext authContext = new Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext(authority);
Microsoft.IdentityModel.Clients.ActiveDirectory.ClientCredential clientCredential = new Microsoft.IdentityModel.Clients.ActiveDirectory.ClientCredential("xxxxxxx-7974-xxxx-xxxx-9dd621fxxxxx", secret);
Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationResult authResult = await authContext.AcquireTokenAsync("dd543eda-xxxx-xxxx-xxxx-58ddd58565db", clientCredential);

string token = authResult.AccessToken;

能够获得令牌并成功地调用受保护的webapi。

但是,由于这将是公共客户端桌面应用程序,那么保护我的秘密的最佳方法是什么?我不能把它放在appsettings.json里,因为它会暴露出来。我也不能把钥匙库也放进去,因为我需要一些其他的文件才能进入钥匙库。

任何帮助都将不胜感激。谢谢

EN

回答 1

Stack Overflow用户

发布于 2022-10-10 13:14:40

如果您使用授权代码授权流而不是客户端凭据流,PublicClient应该在不使用client_secret的情况下工作。但是请记住,有了授权-代码授权流,用户交互的依赖性就出现了。授权-代码授权流只有当用户以交互方式登录到应用程序时才能工作。

随着客户端凭据流的工作,必须提供客户端秘密,因为它是客户端凭据流工作所必需的属性。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73486280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档