我們使用Spring接受OAuth令牌生成,它接受用戶名/密碼/ ClientId/Secret,這非常完美。對於外部客戶端,我們只需輸入用戶名和密碼並生成OAuth令牌。沒有ClientId和ClientSecret的外部客戶端的Spring OAuth2令牌
<security:http pattern="/oauth/token" create-session="stateless"
authentication-manager-ref="clientAuthenticationManager"
xmlns="http://www.springframework.org/schema/security">
<security:intercept-url pattern="/oauth/token" access="IS_AUTHENTICATED_FULLY" />
<security:anonymous enabled="false" />
<security:http-basic entry-point-ref="clientAuthenticationEntryPoint" />
<!-- include this only if you need to authenticate clients via request parameters -->
<security:custom-filter ref="clientCredentialsTokenEndpointFilter" after="BASIC_AUTH_FILTER" />
<security:access-denied-handler ref="oauthAccessDeniedHandler" />
</security:http>
下面是我們需要添加的新代碼,但它是在瀏覽器中要求用戶名和密碼。
<security:http pattern="/**external**/oauth/token" create-session="stateless"
authentication-manager-ref="clientAuthenticationManager"
xmlns="http://www.springframework.org/schema/security">
<security:intercept-url pattern="/external/oauth/token" access="IS_AUTHENTICATED_FULLY" />
<security:anonymous enabled="false" />
<security:http-basic entry-point-ref="clientAuthenticationEntryPoint" />
<security:custom-filter ref="clientCredentialsTokenEndpointFilter" after="BASIC_AUTH_FILTER" />
<security:access-denied-handler ref="oauthAccessDeniedHandler" />
</security:http>
請指導我們是否可以在沒有clientId的情況下生成OAuth並在內部傳遞clientId以生成OAuth。
同意你的觀點,但我想實現的是使用內部傳遞的clientId生成令牌,其中用戶只通過spring security xml配置傳遞用戶名和密碼。 – Rahul
您是否在談論發佈隱式令牌?通過隱式授予,Oauth客戶端將把用戶的瀏覽器重定向到服務器上的/ oauth/authorize。該URL受到保護,因此瀏覽器被重定向到登錄頁面,用戶使用基於表單的身份驗證進行身份驗證。登錄後,瀏覽器將顯示批准頁面,用戶r批准/拒絕clientId標識的應用程序的訪問。 OAuth客戶端不應該看到憑據,只有受信任的OAuth服務器應該,否則不需要使用OAuth。 –