【发布时间】:2018-09-21 15:15:23
【问题描述】:
我有一个 javascript 电子应用程序 (https://github.com/damien122/cloudnoter),它应该连接到 Microsoft 图形后端并提供对 OneNote 笔记本的访问。 以前它工作得很好,但微软改变了 API,我现在应该调整我的应用程序。 以前可以在不使用客户端密钥的情况下通过代码获取 Bearer 令牌,但现在我应该使用客户端密钥和我的问题:
是否建议将客户端密码放入源代码中?并将其发布在 GitHub 上。有人可以用客户端 ID 和客户端密码做什么?我应该保持客户秘密真的“秘密”吗?我可以向我的应用提供客户端机密并保密吗?
在 m.s. 的应用注册服务中我将该应用程序注册为 Web 应用程序,因为这是为我获取身份验证的唯一方法。如果没有客户端密码,我找不到如何对 Web 应用程序进行身份验证的方法。并且找不到如何使用 javascript 注册“Nativ/Mobile App”的方法。 顺便说一句,我使用这个文档 -> https://developer.microsoft.com/en-us/graph/docs/concepts/auth_v2_user
【问题讨论】:
-
“隐式身份验证”流程(来自您的屏幕截图)不应要求保密,除非 Microsoft 不符合 OAuth2。
-
您也不应该能够使用隐式身份验证进行刷新。您是否有可能使用了“错误”的 oauth 流程?
-
在文档中还写道,只有在使用 webapp 时才需要密钥。我的应用程序就是这种情况。你指的是哪个流?
-
我首先使用流程请求授权代码,然后使用该代码我应该请求不记名令牌。第二步需要客户端密码,否则我从后端收到授权错误。
-
那是授权码授权,而不是隐式授权(这是你想要的)。您应该将 Implicit 与本机应用程序一起使用(或使用来自您自己的后端服务器的 Auth Code 来代理对 Graph 的调用)。此外,答案是明确的不。你应该永远将你的秘密告诉客户。
标签: javascript oauth electron azure-active-directory microsoft-graph-api