Oauth 2.0 如何在Microsoft Power Automation中使用自己的OAuth2连接自定义API?

Oauth 2.0 如何在Microsoft Power Automation中使用自己的OAuth2连接自定义API?,oauth-2.0,azure-active-directory,power-automate,Oauth 2.0,Azure Active Directory,Power Automate,我一直在尝试将Microsoft Power Automation连接到我的API。我的API有一个OAuth2代码流。 根据Power Automation,连接器可以连接到我的API。并执行一个测试。但问题是微软发送了一个由他们生成的承载令牌,而不是我通过OAuth2给他们的那个,在我的API上继续发送,如预期的那样出现401错误(无效令牌) 在“电源自动化自定义连接器”页面的“安全性”选项卡中,我有以下内容: 身份验证类型 OAuth2.0 OAuth2.0设置 身份提供程序:通用OAu

我一直在尝试将Microsoft Power Automation连接到我的API。我的API有一个OAuth2代码流。 根据Power Automation,连接器可以连接到我的API。并执行一个测试。但问题是微软发送了一个由他们生成的承载令牌,而不是我通过OAuth2给他们的那个,在我的API上继续发送,如预期的那样出现401错误(无效令牌)

在“电源自动化自定义连接器”页面的“安全性”选项卡中,我有以下内容:

身份验证类型

OAuth2.0

OAuth2.0设置

  • 身份提供程序:通用OAuth2
  • 客户端ID:SomeValue
  • ClientSecrect:SomeValue
  • 授权URL:mydomain.com/auth/authorize
  • 令牌URL:mydomain.com/auth/Token
  • 刷新URL mydomain.com/auth/token
  • 重定向URL:microsoft-flow.com/Redirect(不是真实的)
当Microsoft向mydomain.com/auth/token发出POST请求时,我返回以下正文:

{
access_token: "non JWT token", // simillar to a hash
refresh_token: "non JWT token",
expires_in: 3600
}
上述请求是microsoft在接受为有效连接之前的最终请求。microsoft发送给我的令牌是JWT令牌,而不是我提供的令牌

我见过一些人在应用程序中使用Azure广告认证,但我试图实现与其他platoforms类似的东西(例如Github、Spotify、e.t.c)

所以我的问题是,是否可以使用OAuth2将Power Automation连接到自定义API?如果是,怎么做?

这是可能的

除了列出的OAuth2.0设置之外,还有另一个重要的属性
Scope
,您遗漏了它

因为您的API在Azure AD中受保护,所以我假设您已经和

之后,您可以获取api的应用程序ID URI(
api://{clientId}

您应该将此值放入Power Automation中的“范围”,如下所示:


然后,您的API将认为此访问令牌有效。

我已完成两个步骤来解决此问题

第一步 以前,我的API返回了带有
access\u-token
refresh\u-token
expires\u-in
的主体,但后来我添加了
scope
token\u-type
。例如:

{
访问令牌:“2346ad27d7568ba9896f1b7da6b5991251debdf2”,
刷新令牌:“4468e5deabf5e6d0740cd1a77df56f67093ec943”,
在:3600,
范围:“无”,
令牌类型:“承载者”
}
步骤2 删除自定义连接件并使用相同的参数创建一个新连接件。当我到达“测试”部分时,Power Automatic终于可以成功地发出GET请求

在我的例子中,即使API更新了,Power Automatic仍然在使用它的错误令牌,所以我必须删除那个自定义连接器并创建一个新的连接器

结论
通过更新API并删除旧的自定义连接器,我可以使连接器正常工作。

我会考虑这一点。非常感谢。我的API确实有一个microsoft登录名,但它使用了我自己的自定义令牌来访问。我这样做是因为我不知道API是否会有其他登录方法。如果我的API要与Microsoft集成,那么这将是一个最佳实践。对于我的具体问题,我发布了解决方案。