精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Apereo CAS SSO單點系統的 OAuth2/OpenID Connect集成問題

開發 前端
在現代分布式系統中,單點登錄(SSO)已成為必不可少的部分。Apereo CAS 作為開源的企業級單點登錄解決方案,以其豐富的功能和高度的可配置性,廣泛應用于各大組織中。

本專題將深入探討Apereo CAS系統中常見的復雜問題,并提供詳細的解決方案。涵蓋身份驗證、多因素認證、SSO集成、性能優化等方面,每篇文章詳細剖析問題并提供實際案例與代碼示例,幫助開發者應對挑戰,提升CAS系統的安全性、穩定性與用戶體驗。

Apereo CAS SSO單點系統的 OAuth2/OpenID Connect集成問題

在現代分布式系統中,單點登錄(SSO)已成為必不可少的部分。Apereo CAS 作為開源的企業級單點登錄解決方案,以其豐富的功能和高度的可配置性,廣泛應用于各大組織中。本文聚焦于Apereo CAS 與 OAuth2/OpenID Connect 集成時的常見問題,并提供相應的解決方案與示例代碼,幫助開發者深入理解和正確實現該集成。

OAuth2/OpenID Connect集成過程中常見問題

在OAuth2和OpenID Connect (OIDC)的集成過程中,常見問題主要集中在以下幾個方面:

1. 配置不當

OAuth2/OIDC 是高度配置化的協議,任何一個配置項的錯誤都可能導致集成失敗。常見的配置問題包括:

  • 回調URL錯誤:客戶端的回調URL必須與在CAS中配置的URL精確匹配。任何錯字或路徑錯位都會導致重定向失敗。
  • 授權端點和令牌端點錯誤:這些是OAuth2流程中的關鍵端點。錯誤的端點地址會導致請求被拒絕。
  • 客戶端ID和客戶端密鑰配置錯誤:確保配置的客戶端ID和密鑰與在CAS中注冊的一致。

2. 參數缺失或錯誤

在OAuth2/OIDC流程中,某些參數是必需的,任何缺失或錯誤的參數都會導致請求失敗。關鍵參數包括:

  • client_id:標識客戶端的唯一標識符。
  • redirect_uri:請求授權后回調的URL,必須精確匹配CAS中配置的URL。
  • scope:定義客戶端請求的權限范圍,常見的值有 "openid"、"profile"、"email" 等。
  • response_type:定義授權請求的類型,如 “code” 表示授權碼模式。

3. 不匹配的協議版本

OAuth2和OIDC是不斷演進的標準,不同版本間可能存在不兼容性。例如,OIDC在OAuth2之上新增了身份功能,而這些功能可能在不同版本的實現中存在差異。因此,確保各組件使用相同版本的協議非常重要。

4. 安全問題

OAuth2中存在一定的安全隱患,如:

  • 令牌泄露:令牌是訪問資源的鑰匙,一旦泄露,攻擊者可以繞過身份驗證直接訪問資源。
  • 重放攻擊:攻擊者捕獲合法的令牌請求并多次重放,造成不必要的授權。

為了防范這些安全問題,可以采取以下措施:

  • 使用安全的通信協議(如HTTPS)保護數據傳輸。
  • 實現適當的令牌生命周期管理(如短時令牌、刷新令牌的有效期)。
  • 在令牌請求中加入 nonce 和 state 參數,防止重放攻擊。

使用OAuth2/OpenID Connect進行身份驗證

1. OAuth2 授權流程

OAuth2框架支持多個授權模式,但最常用的是授權碼模式(Authorization Code Grant)。以下是該模式的詳細流程:

(1)用戶請求授權

用戶訪問客戶端應用時,客戶端引導用戶到CAS的授權端點??蛻舳税l送如下請求:

GET /cas/oauth2.0/authorize?response_type=code&client_id=your-client-id&redirect_uri=https://your-redirect-uri&scope=openid&state=xyz
  • response_type=code:表示請求授權碼。
  • client_id:客戶端的標識符。
  • redirect_uri:授權后重定向的URL。
  • scope:請求的權限范圍。
  • state:客戶端生成的隨機字符串,用于防止CSRF攻擊。

(2)用戶登錄并授權

用戶在CAS界面上輸入用戶名和密碼進行登錄,并授予客戶端訪問權限。CAS驗證用戶身份后,生成一段授權碼,并將用戶重定向回客戶端的 redirect_uri。

(3)CAS返回授權代碼

如果用戶成功登錄并授權,CAS 會將用戶重定向到客戶端的 redirect_uri,并附帶授權碼。例如:

https://your-redirect-uri?code=authorization-code&state=xyz

(4)客戶端通過授權碼獲取令牌

客戶端收到授權碼后,向CAS的令牌端點發送請求,以換取訪問令牌和ID令牌:

POST /cas/oauth2.0/accessToken
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code&code=authorization-code&redirect_uri=https://your-redirect-uri&client_id=your-client-id&client_secret=your-client-secret
  • grant_type=authorization_code:表示使用授權碼模式。
  • code:CAS返回的授權碼。
  • redirect_uri:與前一步中的 redirect_uri 必須一致。
  • client_id 和 client_secret:客戶端的標識符和密鑰。

如果請求成功,CAS 會返回包含訪問令牌和ID令牌的JSON響應:

{
  "access_token": "access-token",
  "token_type": "Bearer",
  "expires_in": 3600,
  "id_token": "id-token"
}

(5)通過訪問令牌訪問資源

客戶端可以攜帶訪問令牌訪問受保護資源,資源服務器驗證令牌并返回請求的資源??蛻舳嗽谡埱箢^中加入 Authorization: Bearer access-token 發送請求:

GET /protected/resource
Authorization: Bearer access-token

2. OpenID Connect 身份驗證

OIDC 是在 OAuth2 之上加入了身份驗證功能的協議,主要通過ID令牌(ID Token)來提供身份信息。ID令牌是一個 JWT,包含用戶的相關信息。OIDC 授權流程與 OAuth2 類似,增加了 ID 令牌的獲取和解析:

獲取ID令牌

客戶端在換取訪問令牌的同時,會獲得一個ID令牌。ID令牌本質上是一個JWT,包含了用戶的身份信息。例如:

{
  "iss": "https://your-cas-server/cas",
  "sub": "user_id",
  "aud": "your-client-id",
  "exp": 1628888397,
  "iat": 1628884797,
  "nonce": "xyz",
  "auth_time": 1628884797,
  "idp": "https://your-idp",
  "acr": "urn:mace:incommon:iap:silver",
  "amr": ["pwd"],
  "name": "John Doe",
  "preferred_username": "johnd",
  "email": "john.doe@example.com"
}

驗證ID令牌

客戶端在接收到 ID 令牌后,需要對其進行驗證,包括:

  • 驗證JWT簽名,確保令牌未被篡改。
  • 驗證 iss、aud 和 exp 等標準聲明。

以下是驗證ID令牌的示例代碼(使用 Java 和 Nimbus JOSE + JWT 庫):

import com.nimbusds.jose.JWSObject;
import com.nimbusds.jose.JWSVerifier;
import com.nimbusds.jose.crypto.RSASSAVerifier;
import com.nimbusds.jwt.JWTClaimsSet;
import com.nimbusds.jwt.SignedJWT;
import java.security.interfaces.RSAPublicKey;

public boolean verifyIDToken(String idToken, RSAPublicKey publicKey) throws Exception {
    // 解析JWT
    SignedJWT signedJWT = SignedJWT.parse(idToken);
    JWSVerifier verifier = new RSASSAVerifier(publicKey);

    // 驗證簽名
    if (!signedJWT.verify(verifier)) {
        throw new Exception("ID Token signature verification failed");
    }

    // 提取聲明
    JWTClaimsSet claimsSet = signedJWT.getJWTClaimsSet();

    // 驗證標準聲明
    if (!claimsSet.getIssuer().equals("https://your-cas-server/cas") || 
        !claimsSet.getAudience().contains("your-client-id") || 
        claimsSet.getExpirationTime().before(new Date())) {
        throw new Exception("ID Token claims validation failed");
    }

    return true;
}

以上代碼示例展示了如何使用OAuth2和OpenID Connect進行身份驗證,包括獲取授權碼、交換令牌以及驗證ID令牌的全過程。理解和正確實現這些步驟對于成功集成Apereo CAS SSO系統至關重要。

協議配置與問題排查

1. 基本配置

首先確保 CAS 服務器配置正確,以下是默認情況下的配置示例:

# CAS OAuth2.0 配置
cas.authn.oauth.userProfileViewType=FLAT
cas.authn.oauth.accessToken.crypto.signing.key=yourEncryptionKey
cas.authn.oauth.accessToken.crypto.encryption.key=yourSigningKey
cas.authn.oauth.extractUserPrincipalEmail=true

OAuth2 客戶端配置:

# CAS OIDC 客戶端配置
cas.authn.oidc.issuer=https://your-cas-server/cas/oidc
cas.authn.oidc.jwks.jwks=classpath:/etc/cas/jwks.json

確保客戶端已正確配置 client_id、client_secret 以及對應的 redirect_uri。

2. 常見問題排查

問題一:配置錯誤

檢查配置文件,確保所有必需的配置項都已正確設置。許多問題源自于配置錯誤,例如回調URL不正確、端點地址錯誤等。

問題二:缺失或錯誤參數

在進行授權請求時,確保包含以下基本參數:

GET /cas/oauth2.0/authorize?
    response_type=code&
    client_id=your-client-id&
    redirect_uri=https://your-redirect-uri&
    scope=openid&
    state=xyz

如果客戶端缺少必須的參數,CAS 會返回錯誤,表明請求無效。

問題三:協議版本不匹配

確定各組件使用的協議版本是兼容的。例如,OIDC 的服務端與客戶端需要確保JWT解析邏輯一致。

問題四:安全問題

確保使用安全的加密算法和密鑰管理策略,防范令牌泄露和中間人攻擊。

示例代碼:OAuth2/OpenID Connect集成示例

假設我們要集成一個簡易的 Spring Boot 應用作為 OAuth2 客戶端,以下是相關代碼示例:

1. 客戶端依賴配置(pom.xml)

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-oauth2-client</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.security.oauth.boot</groupId>
        <artifactId>spring-security-oauth2-autoconfigure</artifactId>
        <version>2.3.4.RELEASE</version>
    </dependency>
</dependencies>

2. 安全配置類

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.oauth2.client.registration.ClientRegistrationRepository;
import org.springframework.security.oauth2.client.web.OAuth2LoginAuthenticationFilter;

@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests(authorizeRequests ->
            authorizeRequests.anyRequest().authenticated()
        )
        .oauth2Login(oauth2Login ->
            oauth2Login.loginPage("/oauth2/authorization/cas")
        );
    }
    
    @Bean
    public ClientRegistrationRepository clientRegistrationRepository() {
        return new InMemoryClientRegistrationRepository(this.casClientRegistration());
    }

    private ClientRegistration casClientRegistration() {
        return ClientRegistration.withRegistrationId("cas")
                .clientId("your-client-id")
                .clientSecret("your-client-secret")
                .redirectUriTemplate("{baseUrl}/login/oauth2/code/{registrationId}")
                .scope("openid")
                .authorizationUri("https://your-cas-server/cas/oauth2.0/authorize")
                .tokenUri("https://your-cas-server/cas/oauth2.0/accessToken")
                .userInfoUri("https://your-cas-server/cas/oauth2.0/profile")
                .clientName("CAS")
                .build();
    }
}

3. 應用配置文件(application.yml)

spring:
  security:
    oauth2:
      client:
        registration:
          cas:
            client-id: your-client-id
            client-secret: your-client-secret
            scope: openid
            redirect-uri: "{baseUrl}/login/oauth2/code/cas"
            authorization-grant-type: authorization_code
            client-name: CAS
            authorization-uri: https://your-cas-server/cas/oauth2.0/authorize
            token-uri: https://your-cas-server/cas/oauth2.0/accessToken
            user-info-uri: https://your-cas-server/cas/oauth2.0/profile

通過以上配置,Spring Boot 應用可以與Apereo CAS 實現 OAuth2/OIDC 集成。

注意事項:協議規范的正確實現與應用

在進行相關集成時,需特別注意以下幾點:

  1. 確保配置的正確性:包括但不限于回調URL、授權端點、令牌端點等。
  2. 遵循協議規范:嚴格按照 OAuth2/OIDC 協議規范進行實現,避免自定義方式破壞協議的一致性。
  3. 安全性保障:對敏感數據進行加密處理,防范常見安全風險。
  4. 參數校驗:全面校驗請求參數,確保請求的合法性。

以上是Apereo CAS SSO 與 OAuth2/OIDC集成的詳細實現及常見問題解析。希望本文對大家在集成過程中有所幫助。

今天就講到這里,如果有問題需要咨詢,大家可以直接留言或掃下方二維碼來知識星球找我,我們會盡力為你解答。

責任編輯:武曉燕 來源: 路條編程
相關推薦

2023-08-29 08:00:38

2022-05-12 07:37:51

單點登錄微服務開源

2012-12-03 13:54:15

IBMdW

2011-02-23 13:48:05

Web

2017-08-04 18:10:09

2013-05-02 14:13:44

Android開發OAuth2服務認證

2025-06-26 04:11:00

SpringSecurityOAuth2

2024-12-06 07:00:00

2022-11-07 08:36:11

2024-03-01 11:33:31

2013-12-19 09:49:42

云計算集成云集成云連接器

2024-09-11 08:37:39

2023-08-31 08:34:07

Users對象序列化

2021-08-29 23:33:44

OAuth2服務器Keycloak

2020-12-28 05:52:27

SSO登錄單點

2021-08-02 12:50:45

sessiontokenJava

2025-04-29 09:07:21

2022-04-11 07:34:46

OAuth2UAA節點

2024-06-21 09:28:43

2023-11-08 14:57:41

點贊
收藏

51CTO技術棧公眾號

亚洲另类在线一区| 精品一区二区三区免费视频| 亚洲色图13p| 欧美一级黄色片视频| 最新国产在线观看| 国产91精品免费| 国产91色在线| 国产亚洲精品久久久久久无几年桃| 日本成人a网站| 51午夜精品国产| 日韩av综合在线观看| av免费观看一区二区| 成人黄色一级视频| 国产日韩欧美在线播放| 欧美成人精品欧美一级乱黄| 不卡在线一区| 亚洲成av人影院在线观看| 欧美伦理片在线看| 丁香花在线高清完整版视频| 中文成人av在线| 久久精品中文字幕一区二区三区| 亚洲综合精品国产一区二区三区 | 亚洲一区二区在线看| 亚洲精品国偷拍自产在线观看蜜桃| 可以免费看不卡的av网站| 久99九色视频在线观看| 夫妇露脸对白88av| 亚洲va久久| 日韩欧美高清dvd碟片| 一区二区xxx| 中文在线资源| 亚洲r级在线视频| 久久久无码中文字幕久...| 国产精品秘入口| 99国产精品久| 国产精品视频在线免费观看| 亚洲一区二区三区高清视频| 视频一区二区三区中文字幕| 欧美亚洲成人精品| 日本少妇在线观看| 欧美日韩四区| 久久6免费高清热精品| 亚洲女人久久久| 成人嫩草影院| 黄页网站在线| 国产成人精品免费视频网站| 国产深夜精品福利| 羞羞色院91蜜桃| 麻豆精品网站| 欧洲美女免费图片一区| 久久久久久久久久久久久久av| 狠狠色狠狠色综合日日tαg| 久久99热精品| 久久黄色小视频| 欧美视频网站| 欧美精品亚州精品| 538精品在线观看| 欧美日韩国产高清| 欧美大片网站在线观看| 青青草原免费观看| 亚洲视频狠狠| 91精品国产自产91精品| 国产精品美女久久久久av爽| 国产日韩一区| 国产精品久久久久久久久借妻| 亚洲无码精品一区二区三区| 免费在线观看成人| 成人黄色短视频在线观看| 国产又大又黑又粗| 国产+成+人+亚洲欧洲自线| 国产精品v欧美精品v日韩| 亚洲精品911| 93久久精品日日躁夜夜躁欧美| 欧美理论一区二区| 欧美人xxx| 一区二区三区四区不卡在线 | 手机在线免费av| 亚洲国产一区二区久久| 亚洲国产岛国毛片在线| 亚洲欧美日本国产有色| а√天堂资源地址在线下载| 一区二区三区欧美视频| 国产人妻777人伦精品hd| 亚洲天堂电影| 欧美日韩视频一区二区| 欧美xxxx黑人| 免费欧美激情| 久久夜色精品亚洲噜噜国产mv| 久久久久久天堂| 免费欧美日韩| 成人免费在线网址| 黄色三级网站在线观看| 国产日韩欧美麻豆| 日韩最新中文字幕| 欧产日产国产精品视频| 欧美日韩另类国产亚洲欧美一级| wwwww在线观看| 91精品国产闺蜜国产在线闺蜜| 欧美成人精品一级| 日韩av网址在线| 日日操免费视频| 亚洲少妇在线| 91人成网站www| 五月婷婷激情在线| 最新不卡av在线| 97国产精东麻豆人妻电影| 欧美性www| 日韩精品在线视频观看| 成熟的女同志hd| 日韩精品一级二级| 国产精品毛片va一区二区三区| 91激情在线| 亚洲国产日韩一级| 国产无色aaa| 神马电影久久| 国内精品久久久| 中文字幕网址在线| www.欧美日韩国产在线| 欧美 日韩 国产 在线观看 | 黄网站色欧美视频| 亚洲黄色片免费看| 欧美日韩伦理| 日韩美女免费观看| 手机av免费在线观看| 一区二区在线观看视频在线观看| 激情五月亚洲色图| 啄木系列成人av电影| 欧美激情视频一区| 99热这里只有精| 中文字幕亚洲不卡| 不卡影院一区二区| 亚洲系列另类av| 午夜精品福利在线观看| 精品毛片在线观看| 亚洲欧洲成人自拍| 蜜桃免费在线视频| 亚洲男人都懂第一日本| 91精品国产乱码久久久久久蜜臀 | 91麻豆成人久久精品二区三区| 波多野结衣与黑人| 日本少妇全体裸体洗澡| 999成人精品视频线3| 国产va免费精品高清在线| 日本免费一区视频| 亚洲成人精品一区| 99re这里只有| 亚洲激情av| 国产另类自拍| 国产精品一区hongkong| 精品国产精品网麻豆系列| 麻豆疯狂做受xxxx高潮视频| 国产伦理精品不卡| 裸体裸乳免费看| 精品国产一区二| 欧美成aaa人片免费看| 国产麻豆免费观看| 亚洲精品福利视频网站| 中文字幕在线播放一区二区| 欧美三级黄美女| 国产日韩欧美精品| 咪咪网在线视频| 亚洲美女又黄又爽在线观看| 久久久久在线视频| 国产精品毛片a∨一区二区三区| 538在线视频观看| 天天综合久久| 高清国产一区| 亚洲精品永久免费视频| 伊是香蕉大人久久| 国产一区二区在线视频聊天| 亚洲六月丁香色婷婷综合久久| 中文字幕18页| 欧美一级二区| 亚洲午夜精品久久| 日韩中文字幕视频网| 69久久夜色精品国产69| 国产精品四虎| 欧美人xxxx| 国产精品7777| 国产欧美日韩亚州综合 | 国产呦精品一区二区三区网站| 不卡中文字幕在线| 久久97精品| 国产精品狼人色视频一区| 在线观看的网站你懂的| 久久中文在线| 久久激情视频免费观看| av官网在线观看| 五月激情丁香一区二区三区| 欧美人与禽zoz0善交| 成人免费视频一区二区| 九九九在线观看视频| 午夜精品婷婷| 亚洲国产高清国产精品| 欧美经典影片视频网站| 日韩av电影在线免费播放| 国产黄色小视频在线| 亚洲精品国产精品久久清纯直播| 波多野结衣激情视频| 一区二区三区四区在线播放 | 天天揉久久久久亚洲精品| 高清视频在线观看一区| 午夜av成人| 久久久久久久久国产精品| 成人三级黄色免费网站| 亚洲成年人在线播放| 亚洲无码久久久久久久| 精品国产福利视频| 黄色一级视频在线观看| 国产欧美精品日韩区二区麻豆天美| 丰满饥渴老女人hd| 久久精品国产秦先生| 成人免费观看视频在线观看| 欧美人成在线| 在线丝袜欧美日韩制服| 精品乱码一区二区三四区视频| 午夜亚洲性色视频| 亚洲午夜久久久影院伊人| 清纯唯美亚洲经典中文字幕| 91黄色国产视频| 激情欧美一区二区三区黑长吊| 欧美亚洲激情视频| 国产在线xxx| 欧美精品在线极品| 98在线视频| 亚洲色图偷窥自拍| 日本国产在线| 日韩毛片中文字幕| 手机av在线免费观看| 精品处破学生在线二十三| 国产av无码专区亚洲av| 欧美蜜桃一区二区三区| 中文字幕一区二区三区免费看 | 美女久久久久久久久久久| 91九色在线porn| 亚洲日韩第一页| 毛片免费在线| 亚洲美女在线视频| 丰满肥臀噗嗤啊x99av| 欧美一级片在线看| av中文字幕免费| 7777精品伊人久久久大香线蕉的 | 久久综合久久综合亚洲| 中文字幕一区二区人妻电影丶| 国产精品一区专区| 制服下的诱惑暮生| 国产精品夜夜爽| 91黄在线观看| 无码无套少妇毛多18pxxxx| 午夜精品视频一区| 日韩精品视频免费看| 亚洲超碰精品一区二区| www日韩精品| 色综合网色综合| 亚洲 国产 日韩 欧美| 欧美色欧美亚洲另类二区| 在线观看xxxx| 91精品午夜视频| a在线观看免费| 欧美va亚洲va香蕉在线 | 亚洲欧美中文字幕| 国产三级在线免费观看| 最近2019中文免费高清视频观看www99 | 国产亚洲精品久久久久动| h视频在线免费| 久久精品国产亚洲一区二区| av免费看在线| 97超级碰碰人国产在线观看| 欧美大片高清| 成人精品aaaa网站| 精品精品国产毛片在线看| 日韩高清dvd| 在线精品视频在线观看高清| 91亚洲精品国产| 欧美亚洲一区| 五月六月丁香婷婷| 99精品国产热久久91蜜凸| x88av在线| 一区二区三区不卡视频在线观看 | 在线看一级片| 2019中文字幕在线观看| 波多野结衣高清视频| 国产成人精品亚洲777人妖 | 国产欧美精品区一区二区三区| 来吧亚洲综合网| 五月天婷婷综合| 亚洲天堂2021av| 亚洲第一页在线| 91网页在线观看| 久久久视频在线| 粉嫩av一区二区三区四区五区 | 外国成人免费视频| 欧美精品久久久久久久免费| 日韩精品色哟哟| 国产精久久久久| 欧美国产乱子伦| 国产在线综合网| 欧美日韩第一区日日骚| 午夜小视频在线播放| 日韩视频免费在线| 女生影院久久| 99国产在线观看| 日韩精品午夜| 国产九九九九九| 国产在线视视频有精品| 亚洲午夜久久久久久久国产| 亚洲国产一区二区a毛片| 一卡二卡在线视频| 日韩精品亚洲精品| hd国产人妖ts另类视频| 91夜夜揉人人捏人人添红杏| 国产91久久精品一区二区| 欧美视频在线第一页| 麻豆91在线观看| 国产高清一区二区三区四区| 欧美另类激情| 国产成人啪精品视频免费网| 99热这里只有精品首页| 五月天色婷婷综合| 日韩 欧美一区二区三区| 网站免费在线观看| 一区二区三区成人| 国产美女无遮挡永久免费| 一二美女精品欧洲| 美女福利一区二区| 精品无人区一区二区三区| 欧美日韩三区| 手机在线播放av| 亚洲日本在线天堂| 在线观看免费黄色小视频| 亚洲乱码国产乱码精品精天堂| 日韩激情美女| 亚洲一区二区久久久久久| 欧美肥老太太性生活| 9久久婷婷国产综合精品性色| 久久综合中文字幕| 依依成人综合网| 亚洲精品视频免费在线观看| 日本在线影院| 久久久一本精品99久久精品66| 亚洲激情av| 国产麻豆xxxvideo实拍| 午夜免费久久看| 网站黄在线观看| 97在线观看免费| 日韩成人一级| 人妻熟女一二三区夜夜爱| 91一区一区三区| 9i看片成人免费看片| 亚洲男人天堂2023| av高清一区| 亚洲二区自拍| 极品少妇xxxx精品少妇偷拍 | 色喇叭免费久久综合网| 天天操,天天操| 国产精品麻豆欧美日韩ww| 一本色道久久综合亚洲| 久久精品免费播放| 亚洲国产欧美国产第一区| 精品一区二区三区无码视频| 成人18精品视频| 香蕉影院在线观看| 在线看国产精品| 国产日韩欧美视频在线观看| 自拍偷拍国产精品| 国产一区二区三区中文字幕| 欧美乱妇40p| 欧美顶级毛片在线播放| 日韩手机在线观看视频| 国产精品久久久久久亚洲伦| 国产福利小视频| 97视频免费在线看| 精品国产精品| 九九九久久久久久久| 亚洲成人7777| 国产小视频免费在线网址| 国产免费成人av| 狠狠爱成人网| 欧美18—19性高清hd4k| 91精品国产高清一区二区三区| www.综合网.com| 日韩av一级大片| 国产成人在线免费观看| 久久99精品波多结衣一区| 在线观看久久av| 丁香5月婷婷久久| 日韩一级片播放| 亚洲狼人国产精品| 免费国产在线观看| 成人激情免费在线| 校园激情久久| 人妻少妇精品一区二区三区| 日韩精品视频免费在线观看| 综合久久伊人| 欧美亚洲一二三区| 亚洲免费av高清| 国产高清免费av在线| av一区二区三区四区电影| 日韩专区一卡二卡| 久久久精品国产sm调教|