3

我有一個OAuth Authserver應用程序,一個Web應用程序(支持OAuth SSO),一個Android應用程序(需要訪問其他資源,在Web應用程序)春天的oauth2 ResourceOwnerPassword流爲單次登錄

我想實現彈簧的oauth2採取OAuth的香草的例子(最新一個沒有JWT)春天開機樣品project.The項目有以下客戶端配置

security.oauth2.client.clientId: acme 
security.oauth2.client.clientSecret: acmesecret 
security.oauth2.client.authorized-grant-types: authorization_code,refresh_token,password 
security.oauth2.client.scope: openid 

所以邏輯流程是這樣的用戶嘗試(如果我錯了指正)訪問ui應用程序 - > zuul代理重定向(帶客戶端詳細信息)到身份驗證服務器 - >使用憑據登錄(受保護/授權url) - >授權範圍 - >用令牌/授權碼返回。

如何消除用戶授權步驟(對於Android應用的目的,我想資源所有者apporach)。我改變了這樣的我的客戶端配置遵循

clients.inMemory().withClient("****").secret("*****").authorities("ROLE_USER") 
       .authorizedGrantTypes("password", "refresh_token").scopes("read", "write"); 

,但我從authserver應用得到錯誤(DefaultRedirectResolver的.java

「A REDIRECT_URI只能由隱式或authorization_code 許可類型中使用的」。

如果我在我的網絡用戶界面應用程序

security: 
    oauth2:  
    client: 
     accessTokenUri: http://localhost:9097/uaa/oauth/token 
     userAuthorizationUri: http://localhost:9097/uaa/oauth/authorize 
     clientId: **** 
     clientSecret: **** 
    resource: 
     userInfoUri: http://localhost:9097/uaa/user 

的單點登錄有我security.oauth性能下面,使用或不能夠資源所有者密碼的方法嗎?如果是這樣,我應該改變作爲配置的一部分?

回答

2

「redirect_uri只能由隱式或授權代碼 授權類型使用。」

我不確定「redirect_uri」,但我不認爲你不能用密碼流單點登錄。 SSO是通過在授權服務器上創建一個會話來實現的,這樣如果授權服務器已經具有經認證的會話,則客戶端(相同或不同)將不必再次進行認證。密碼流不會在認證服務器上創建會話......它只會獲取令牌。

+0

感謝您的回覆。所以對於android的目的我應該有不同的客戶端?更多的相同的錯誤的東西被稱爲春季問題的改進。我會發布鏈接 – karthik