当前位置: 首页 > 知识库问答 >
问题:

使用Active Directory重定向Azure上Spring OAuth2应用的URL:无效的重定向URI参数

邵弘致
2023-03-14

以下是Azure文档的两个教程:https://docs.microsoft.com/en-us/azure/java/spring-framework/deploy-spring-boot-java-app-with-maven-plugin它展示了如何将一个简单的Spring Boot应用程序部署到Azure和https://docs.microsoft.com/en-us/azure/java/spring-framework/configure-spring-boot-starter-java-app-with-azure-active-directory使用Spring Security OAuth2客户端设置并使用active directory作为OAuth2服务器。基本上,我只是将OAuth2依赖项添加到Maven,这是一个WebSecurityConfig类,如第二个文档所示,另外还有azure。activedirectoy和spring。安全属性。

当应用程序刚刚从我的本地计算机运行时,登录和重定向工作正常。但是,当应用程序部署到Azure时,会出现一个应用程序错误:无效的重定向URI参数。我想我已经正确地将重定向uri设置为

https://{baseHost}{basePort}{basePath}/login/oauth2/code/azure

在应用程序属性中以及在我的Active Directory中注册的应用程序中。

据我所知,授权请求使用了正确的参数

response_type: code
client_id: 4b5fbcfd-c35f-4bab-bc45-374c7e1dead8
scope: openid https://graph.microsoft.com/user.read
state: yMvo62R-6vgjETSGr_mnh4iIMZimVnFYZRyiGFaOPtE=
redirect_uri: https://myappname.azurewebsites.net/login/oauth2/code/azure
nonce: FUXJ5GoJ2NuNVx2ORU70YCqnJkEj8FRYHEJYMutEQzo

那么,无效重定向URI参数可能是什么,以及如何更改此参数?

共有2个答案

斜和硕
2023-03-14

最终对我有效的是下面的应用程序。yml。

server:
  forward-headers-strategy: FRAMEWORK
  port: 8080
  error:
    include-message: "always" ## You want to be able to supply meaningful error resolution hints to end users.
  servlet:
    context-path: /myappcontextpath
戴化
2023-03-14

我遵循了这两个教程,它在本地环境中运行良好,在Azure webapp上,我遇到了重定向url不匹配错误。

原因是重定向uri总是以http启动。添加服务器后。在应用程序中,转发头策略=本机。是的,这很有效。(我使用的是spring boot 2.2)

这里有pom.xml供大家参考。

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">  
  <modelVersion>4.0.0</modelVersion>  
  <parent> 
    <groupId>org.springframework.boot</groupId>  
    <artifactId>spring-boot-starter-parent</artifactId>  
    <version>2.2.4.RELEASE</version>  
    <relativePath/>  
    <!-- lookup parent from repository --> 
  </parent>  
  <groupId>com.example.ad</groupId>  
  <artifactId>ad</artifactId>  
  <version>0.0.1-SNAPSHOT</version>  
  <name>ad</name>  
  <description>Demo project for Spring Boot</description>  
  <properties> 
    <java.version>1.8</java.version>  
    <azure.version>2.2.0</azure.version> 
  </properties>  
  <dependencies> 
    <dependency> 
      <groupId>org.springframework.boot</groupId>  
      <artifactId>spring-boot-starter-security</artifactId> 
    </dependency>  
    <dependency> 
      <groupId>org.springframework.boot</groupId>  
      <artifactId>spring-boot-starter-web</artifactId> 
    </dependency>  
    <dependency> 
      <groupId>com.microsoft.azure</groupId>  
      <artifactId>azure-active-directory-spring-boot-starter</artifactId> 
    </dependency>  
    <dependency> 
      <groupId>org.springframework.boot</groupId>  
      <artifactId>spring-boot-starter-test</artifactId>  
      <scope>test</scope>  
      <exclusions> 
        <exclusion> 
          <groupId>org.junit.vintage</groupId>  
          <artifactId>junit-vintage-engine</artifactId> 
        </exclusion> 
      </exclusions> 
    </dependency>  
    <dependency> 
      <groupId>org.springframework.security</groupId>  
      <artifactId>spring-security-test</artifactId>  
      <scope>test</scope> 
    </dependency>  
    <dependency> 
      <groupId>org.springframework.security</groupId>  
      <artifactId>spring-security-oauth2-client</artifactId> 
    </dependency>  
    <dependency> 
      <groupId>org.springframework.security</groupId>  
      <artifactId>spring-security-oauth2-jose</artifactId> 
    </dependency> 
  </dependencies>  
  <dependencyManagement> 
    <dependencies> 
      <dependency> 
        <groupId>com.microsoft.azure</groupId>  
        <artifactId>azure-spring-boot-bom</artifactId>  
        <version>${azure.version}</version>  
        <type>pom</type>  
        <scope>import</scope> 
      </dependency> 
    </dependencies> 
  </dependencyManagement>  
  <build> 
    <plugins> 
      <plugin> 
        <groupId>org.springframework.boot</groupId>  
        <artifactId>spring-boot-maven-plugin</artifactId> 
      </plugin>  
      <plugin> 
        <groupId>com.microsoft.azure</groupId>  
        <artifactId>azure-webapp-maven-plugin</artifactId>  
        <version>1.9.0</version>  
        <configuration>
          <schemaVersion>V2</schemaVersion>
          <resourceGroup>ad-1582615028467-rg</resourceGroup>
          <appName>ad-1582615028467</appName>
          <pricingTier>P1v2</pricingTier>
          <region>westeurope</region>
          <runtime>
            <os>linux</os>
            <javaVersion>jre8</javaVersion>
            <webContainer>jre8</webContainer>
          </runtime>
            <appSettings>
                <property>
                    <name>JAVA_OPTS</name>
                    <value>-Dserver.port=80</value>
                </property>
            </appSettings>
          <deployment>
            <resources>
              <resource>
                <directory>${project.basedir}/target</directory>
                <includes>
                  <include>*.jar</include>
                </includes>
              </resource>
            </resources>
          </deployment>
        </configuration>
      </plugin> 
    </plugins> 
  </build> 
</project>
 类似资料:
  • 我正在尝试让Spotify API与AngularJS一起工作。我在授权阶段收到一个无效的重定向URI错误(https://developer.spotify.com/web-api/authorization-guide/). 我在白名单中添加了redirect_uri,当我有一个uri,比如 但当我有一个带有散列的URI时,它就不起作用了 我想使用后者URI的原因是因为前者我得到了一个URI,

  • 我尝试使用spotify Web API通过我的应用程序对用户进行身份验证,但收到以下错误: 网址: 我看不出问题出在哪里。。。你能帮忙吗?

  • 我对网络开发相当陌生,我一直试图使用Spotify应用编程接口用Python制作一个网络应用程序。 我试图尝试获得对用户帐户的授权,并尝试将其输入我的浏览器(用我的客户端ID替换CLIENTID):https://accounts.spotify.com/authorize?client_id=CLIENTID 然而,我得到了错误: 我有白名单http://example.com/callback

  • [Edit-1]在oauth2配置中添加作用域,添加grafana服务,删除 : 我访问了Grafana,请求被路由到Keyclope 我已经搜索并尝试了一些建议,但它们对我不起作用。希望你们能帮忙。我真的很感激。 这是我的docker swarm配置:

  • 我正在使用linkedIn登录我的iOS应用程序。切换到OAuth2后,回拨URI不再被接受,因为我不断收到错误“无效重定向URI”。应用程序URL方案称为“Paper”,URL标识符为“com”。“纸”。我知道我必须在linkedin开发者页面上设置一个以“http://”或“https://”开头的URL,并且地址必须与回调URI匹配。linkedin开发者设置的授权重定向URL是什么?

  • 在我登录Spotify并将其与我的应用程序连接后,出现了一个错误: 无效的_客户端:无效的重定向URI。 我已经向Spotify注册了我的重定向URI,并确保它与我的代码中使用的相同。我已经根据重定向URI和特定标识符创建了一个带有该方案的URL类型,但仍然会出现错误。有什么想法吗?