我们有一个使用Azure Spring Boot Active Directory启动器“ com.microsoft.azure:azure-active-directory-spring-boot-starter”和Spring Security的应用程序,以保护对该应用程序的访问。一切正常。
这是按照以下说明完成的:
现在,我们要按照以下说明代表已登录的用户调用DevOps REST API:
让我感到困惑的是,每套文档都指定了一种完全不同的注册应用程序的方式
第一句话是:“从门户菜单中,单击“应用程序注册”,然后单击“注册应用程序”。
第二个字样是“转到https://app.vsaex.visualstudio.com/app/register来注册您的应用程序。”
如果我通过第二种方式注册,它不会出现在门户网站的应用程序注册列表中。
因此,目前,我已经注册了两个应用程序,一个在门户中,另一个以第二种方式。
为了向该应用程序注册用户,我在这里指定了为第二个应用程序定义的回调URL(请记住,第一个和第二个应用程序是同一应用程序)。
https://app.vssps.visualstudio.com/oauth2/authorize
?client_id={app ID}
&response_type=Assertion
&state={state}
&scope={scope}
&redirect_uri={callback URL}
但是,由于我已经通过Spring Security / AD登录到该应用程序(第一个机制),因此我从上面的应用程序注册URL中获得了此错误,大概是因为我是从第一个登录的:
AADSTS50011: The reply URL specified in the request does not match the reply URLs configured for the application: idoffirstapplication
问题:
如何通过在引擎盖下使用Oauth2的AD保护我的应用程序,并允许该应用程序代表登录用户调用Devops API?
主要问题似乎是Azure有两个完全不同的终结点集,可用于通过Azure登录和调用Devops REST API。例如,REST API Oauth2令牌终结点是https://app.vssps.visualstudio.com/oauth2/token,而AD 1是https://login.microsoftonline.com/ $ {azure.activedirectory.tenant-id} / oauth2 / token
我可以只拥有一个应用程序,并添加所需的Oauth2范围(vso.release_execute)并添加其他的redirect_uri来处理从对https://app.vssps.visualstudio.com/oauth2/authorize的调用返回的代码,然后具有特定于DevOps的调用令牌获取刷新和访问令牌的URL?
答案 0 :(得分:0)
两个链接是不同的东西。第一个链接是使用用于 Azure Active Directory 的Spring Boot Starter保护Java Web应用程序。第二个链接是授权使用OAuth 2.0访问 Azure DevOps Service 的REST API。
可以在应用程序中调用DevOps API的用户必须能够访问DevOps组织。您可以在以下链接中引用C#示例:
https://github.com/microsoft/azure-devops-auth-samples/tree/master/OAuthWebSample