如何将基于oauth的ui添加到zuul网关?

时间:2017-10-02 04:37:15

标签: microservices spring-cloud spring-security-oauth2 netflix-zuul

我是微服务的新手,我正在尝试使用微服务架构风格创建一个示例应用程序。

我的情况是我有两个名为客户和供应商的微服务,其中实现了弹簧安全性。

为了访问这些微服务,我需要传递两个单独的URL,即

  1. 对于客户: - http://localhost:8090/customer
  2. 供应商: - http://localhost:8091/vendor
  3. 所以我引入了Zuul作为访问这些URL的API网关。

    网关属性文件(application.properties)是:

    eureka.client.enabled=false
    server.port=8080
    zuul.routes.customer.url=http://localhost:8090
    zuul.routes.vendor.url=http://localhost:8091
    security.oauth2.client.access-token-uri= http://localhost:8090/oauth/token
    security.oauth2.client.access-token-uri= http://localhost:8091/oauth/token
    security.oauth2.client.id=client
    security.oauth2.client.client-secret=secret
    

    执行此操作后,我可以访问与客户和供应商有关的所有网址,但我无法访问基于OAuth的网址。 那么,任何人都可以帮我解决如何让我的网关在其中包含基于OAuth的令牌?

    以下是关于OAuth及其在网关和没有网关时的行为的示例示例及其输出。

    没有网关URL的示例-1: -

    input URL: -
    
        http://localhost:8090/oauth/token?password=abcd&username=test5&grant_type=client_credentials&scope=read%20write
    
    Header: -
         Basic Auth
                 userName : client
                 password : secret
    
    output: -
    {
        "access_token": "522a6b21-19bb-4833-90be-69d0c02f220a",
        "token_type": "bearer",
        "expires_in": 99999,
        "scope": "read write"
    } 
    

    带网关网址的示例-2: -

    输入网址: -

        http://localhost:8080/oauth/token?password=abcd&username=test5&grant_type=client_credentials&scope=read%20write
    
    Header: -
         Basic Auth
                 userName : client
                 password : secret
    
    output: -
    {
        "timestamp": 1506918637823,
        "status": 404,
        "error": "Not Found",
        "message": "No message available",
        "path": "/oauth/token"
    }
    

    所以有人可以帮我告诉我这里我做错了什么吗?

    我已按照以下链接实施我的网关。 Reference to API gateway implementation code

    提前致谢。

0 个答案:

没有答案