代码之家  ›  专栏  ›  技术社区  ›  aksappy

Spring Security-参数中没有client_secret的访问令牌

  •  0
  • aksappy  · 技术社区  · 10 年前

    我有一个基于spring安全oauth2的应用程序,配置了一个JDBC客户机存储区。根据OAuth2规范,客户端机密只能在客户端-服务器连接可信时使用,当然不能从可以提取客户端机密的web应用程序中使用。

    所以问题是-我们如何配置以让 /oauth/token 授予类型为“密码”的请求将生成一个访问令牌 client_secret 输入POST参数?

    这是我的授权服务器配置。我会说这很基本。

    <sec:http pattern="/token" create-session="stateless" use-expressions="true" authentication-manager-ref="authenticationManager">
            <sec:headers>
                <sec:frame-options policy="DENY" />
                <sec:hsts />
            </sec:headers>
            <sec:csrf disabled="true" />
            <sec:anonymous enabled="false" />
            <sec:http-basic entry-point-ref="clientAuthenticationEntryPoint" />
            <sec:custom-filter ref="clientCredentialsTokenEndpointFilter" before="BASIC_AUTH_FILTER" />
            <sec:access-denied-handler ref="oauthAccessDeniedHandler" />
        </sec:http>
    
    1 回复  |  直到 10 年前
        1
  •  -2
  •   Community Mohan Dere    5 年前

    根据RFC6749,OAuth2规范,密码授予类型必须将客户端机密作为请求体参数或BASE64编码字符串传入。密码授予类型不适合安全性较低或机密暴露给外部世界风险较高的应用程序。

    对于具有用户代理(web浏览器)的应用程序,隐式授权类型是最好的方法。

    Refer the OAuth2 Specs here

    推荐文章