日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring Security Architecture--官方

發布時間:2025/4/5 javascript 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring Security Architecture--官方 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原文地址:https://spring.io/guides/topicals/spring-security-architecture/

Table of contents

  • Authentication and Access Control
  • Web Security
  • Method Security
  • Working with Threads

This guide is a primer for Spring Security, offering insight into the design and basic building blocks of the framework. We only cover the very basics of application security but in doing so we can clear up some of the confusion experienced by developers using Spring Security. To do this we take a look at the way security is applied in web applications using filters and more generally using method annotations. Use this guide when you need to understand at a high level how a secure application works, and how it can be customized, or if you just need to learn how to think about application security.

This guide is not intended as a manual or recipe for solving more than the most basic problems (there are other sources for those), but it could be useful for beginners and experts alike. Spring Boot is also referred to a lot because it provides some default behaviour for a secure application and it can be useful to understand how that fits in with the overall architecture. All of the principles apply equally well to applications that do not use Spring Boot.

Authentication and Access Control

Application security boils down to two more or less independent problems: authentication (who are you?) and authorization (what are you allowed to do?). Sometimes people say "access control" instead of "authorization" which can get confusing, but it can be helpful to think of it that way because "authorization" is overloaded in other places. Spring Security has an architecture that is designed to separate authentication from authorization, and has strategies and extension points for both.

Authentication

The main strategy interface for authentication is?AuthenticationManager?which only has one method:

public interface AuthenticationManager { Authentication authenticate(Authentication authentication) throws AuthenticationException; }

An`AuthenticationManager` can do one of 3 things in its?authenticate()?method:

  • return an?Authentication?(normally with?authenticated=true) if it can verify that the input represents a valid principal.

  • throw an?AuthenticationException?if it believes that the input represents an invalid principal.

  • return?null?if it can’t decide.

  • AuthenticationException?is a runtime exception. It is usually handled by an application in a generic way, depending on the style or purpose of the application. In other words user code is not normally expected to catch and handle it. For example, a web UI will render a page that says that the authentication failed, and a backend HTTP service will send a 401 response, with or without a?WWW-Authenticate?header depending on the context.

    The most commonly used implementation of?AuthenticationManager?is?ProviderManager, which delegates to a chain of?AuthenticationProvider?instances. An?AuthenticationProvider?is a bit like an?AuthenticationManager?but it has an extra method to allow the caller to query if it supports a given?Authentication?type:

    public interface AuthenticationProvider { Authentication authenticate(Authentication authentication) throws AuthenticationException; boolean supports(Class<?> authentication); }

    The?Class<?>?argument in the?supports()?method is really?Class<? extends Authentication>?(it will only ever be asked if it supports something that will be passed into the?authenticate()?method). A?ProviderManager?can support multiple different authentication mechanisms in the same application by delegating to a chain of?AuthenticationProviders. If a?ProviderManager?doesn’t recognise a particular?Authentication?instance type it will be skipped.

    A?ProviderManager?has an optional parent, which it can consult if all providers return?null. If the parent is not available then a?null?Authentication?results in an?AuthenticationException.

    Sometimes an application has logical groups of protected resources (e.g. all web resources that match a path pattern?/api/**), and each group can have its own dedicated?AuthenticationManager. Often, each of those is a?ProviderManager, and they share a parent. The parent is then a kind of "global" resource, acting as a fallback for all providers.

    Figure 1. An?AuthenticationManager?hierarchy using?ProviderManager

    Customizing Authentication Managers

    Spring Security provides some configuration helpers to quickly get common authentication manager features set up in your application. The most commonly used helper is the?AuthenticationManagerBuilder?which is great for setting up in-memory, JDBC or LDAP user details, or for adding a custom?UserDetailsService. Here’s an example of an application configuring the global (parent)?AuthenticationManager:

    @Configuration public class ApplicationSecurity extends WebSecurityConfigurerAdapter { ... // web stuff here @Autowired public initialize(AuthenticationManagerBuilder builder, DataSource dataSource) { builder.jdbcAuthentication().dataSource(dataSource).withUser("dave") .password("secret").roles("USER"); } }

    This example relates to a web application, but the usage of?AuthenticationManagerBuilder?is more widely applicable (see below for more detail on how web application security is implemented). Note that the?AuthenticationManagerBuilder?is?@Autowired?into a method in a?@Bean?- that is what makes it build the global (parent)?AuthenticationManager. In contrast if we had done it this way:

    @Configuration public class ApplicationSecurity extends WebSecurityConfigurerAdapter { @Autowired DataSource dataSource; ... // web stuff here @Override public configure(AuthenticationManagerBuilder builder) { builder.jdbcAuthentication().dataSource(dataSource).withUser("dave") .password("secret").roles("USER"); } }

    (using an?@Override?of a method in the configurer) then the?AuthenticationManagerBuilderis only used to build a "local"?AuthenticationManager, which is a child of the global one. In a Spring Boot application you can?@Autowired?the global one into another bean, but you can’t do that with the local one unless you explicitly expose it yourself.

    Spring Boot provides a default global?AuthenticationManager?(with just one user) unless you pre-empt it by providing your own bean of type?AuthenticationManager. The default is secure enough on its own for you not to have to worry about it much, unless you actively need a custom global?AuthenticationManager. If you do any configuration that builds an?AuthenticationManager?you can often do it locally to the resources that you are protecting and not worry about the global default.

    Authorization or Access Control

    Once authentication is successful, we can move on to authorization, and the core strategy here is?AccessDecisionManager. There are three implementations provided by the framework and all three delegate to a chain of?DecisionVoter, a bit like the?ProviderManager?delegates to?AuthenticationProviders. A?DecisionVoter?considers an?Authentication?(representing a principal) and a secure?Object?which as been decorated with?ConfigAttributes. The?Object?is completely generic in the signatures of the?AccessDecisionManager?and?DecisionVoter?- it represents anything that a user might want to access (a web resource or a method in a Java class are the two most common cases). The?ConfigAttributes?are also fairly generic, representing a decoration of the secure?Object?with some metadata that determine the level of permission required to access it.?ConfigAttribute?is an interface but it only has one method which is quite generic and returns a?String, so these strings encode in some way the intention of the owner of the resource, expressing rules about who is allowed to access it. A typical?ConfigAttribute?is the name of a user role (like?ROLE_ADMIN?or?ROLE_AUDIT), and they often have special formats (like the?ROLE_?prefix) or represent expressions that need to be evaluated.

    Most people just use the default?AccessDecisionManager?which is?AffirmativeBased?(if no voters decline then access is granted). Any customization tends to happen in the voters, either adding new ones, or modifying the way that the existing ones work.

    It is very common to use?ConfigAttributes?that are Spring Expression Language (SpEL) expressions, for example?isFullyAuthenticated() && hasRole('FOO'). This is supported by a?DecisionVoter?that can handle the expressions and create a context for them. To extend the range of expressions that can be handled requires a custom implementation of?SecurityExpressionRoot?and sometimes also?SecurityExpressionHandler.

    Web Security

    Spring Security in the web tier (for UIs and HTTP back ends) is based on Servlet?Filters, so it is helpful to look at the role of?Filters?generally first. The picture below shows the typical layering of the handlers for a single HTTP request.

    The client sends a request to the app, and the container decides which filters and which servlet apply to it based on the path of the request URI. At most one servlet can handle a single request, but filters form a chain, so they are ordered, and in fact a filter can veto the rest of the chain if it wants to handle the request itself. A filter can also modify the request and/or the response used in the downstream filters and servlet. The order of the filter chain is very important, and Spring Boot manages it through 2 mechanisms: one is that?@Beans?of type?Filter?can have an?@Order?or implement?Ordered, and the other is that they can be part of a?FilterRegistrationBean?that itself has an order as part of its API. Some off-the-shelf filters define their own constants to help signal what order they like to be in relative to each other (e.g. the?SessionRepositoryFilter?from Spring Session has a?DEFAULT_ORDER?of?Integer.MIN_VALUE + 50, which tells us it likes to be early in the chain, but it doesn’t rule out other filters coming before it).

    Spring Security is installed as a single?Filter?in the chain. In a Spring Boot app the security filter is a?@Bean?in the?ApplicationContext, and it is installed by default so that it is applied to every request. It is installed at a position defined by?SecurityProperties.DEFAULT_FILTER_ORDER, which in turn is anchored by?FilterRegistrationBean.REQUEST_WRAPPER_FILTER_MAX_ORDER?(the maximum order that a Spring Boot app expects filters to have if they wrap the request, modifying its behaviour). There’s more to it than that though: from the point of view of the container Spring Security is a single filter, but inside it there are additional filters, each playing a special role. Here’s a picture:

    Figure 2. Spring Security is a single physical?Filter?but delegates processing to a chain of internal filters

    In fact there is even one more layer of indirection in the security filter: it is usually installed in the container as a?DelegatingFilterProxy. The proxy delegates to a?FilterChainProxywhich itself is a?@Bean, usually with a fixed name of?springSecurityFilterChain. It is the?FilterChainProxy?which contains all the security logic arranged internally as a chain (or chains). All the filters have the same API (they all implement the?Filter?interface from the Servlet Spec) and they all have the opportunity to veto the rest of the chain.

    There can be multiple filter chains all managed by Spring Security and all unknown to the container. The Spring Security filter contains a list of filter chains, and dispatches each request to the first chain that matches. The picture below shows the dispatch happening based on matching the request path (/foo/**?matches before?/**). This is very common but not the only way to match a request. The most important feature of this dispatch process is that only one chain ever handles a request.

    Figure 3. The Spring Security?FilterChainProxy?dispatches requests to the first chain that matches.

    A vanilla Spring Boot application with no custom security configuration has a several (call it n) filter chains, where usually n=6. The first (n-1) chains are there just to ignore static resource patterns, like?/css/**?and?/images/**, and the error view?/error?(the paths can be controlled by the user with?security.ignored?from the?SecurityProperties?configuration bean). The last chain matches the catch all path?/**?and is more active, containing logic for authentication, authorization, exception handling, session handling, header writing, etc. There are a total of 11 filters in this chain by default, but normally it is not necessary for users to concern themselves with which filters are used and when.

    Note The fact that all filters internal to Spring Security are unknown to the container is important, especially in a Spring Boot application, where all?@Beans?of type?Filterare registered automatically with the container by default. So if you want to add a custom filter to the security chain, you need to either not make it a?@Bean?or wrap it in a?FilterRegistrationBean?that explicitly disables the container registration.

    Creating and Customizing Filter Chains

    The default fallback filter chain in a Spring Boot app (the one with the?/**?request matcher) has a predefined order of?SecurityProperties.BASIC_AUTH_ORDER. You can switch it off completely by setting?security.basic.enabled=false, or you can use it as a fallback and just define other rules with a lower order. To do that just add a?@Bean?of type?WebSecurityConfigurerAdapter?(or?WebSecurityConfigurer) and decorate the class with?@Order. Example:

    @Configuration @Order(SecurityProperties.BASIC_AUTH_ORDER - 10) public class ApplicationConfigurerAdapter extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.antMatcher("/foo/**") ...; } }

    This bean will cause Spring Security to add a new filter chain and order it before the fallback.

    Many applications have completely different access rules for one set of resources compared to another. For example an application that hosts a UI and a backing API might support cookie-based authentication with a redirect to a login page for the UI parts, and token-based authentication with a 401 response to unauthenticated requests for the API parts. Each set of resources has its own?WebSecurityConfigurerAdapter?with a unique order and a its own request matcher. If the matching rules overlap the earliest ordered filter chain will win.

    Request Matching for Dispatch and Authorization

    A security filter chain (or equivalently a?WebSecurityConfigurerAdapter) has a request matcher that is used for deciding whether to apply it to an HTTP request. Once the decision is made to apply a particular filter chain, no others are applied. But within a filter chain you can have more fine grained control of authorization by setting additional matchers in the?HttpSecurity?configurer. Example:

    @Configuration @Order(SecurityProperties.BASIC_AUTH_ORDER - 10) public class ApplicationConfigurerAdapter extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.antMatcher("/foo/**") .authorizeRequests() .antMatchers("/foo/bar").hasRole("BAR") .antMatchers("/foo/spam").hasRole("SPAM") .anyRequest().isAuthenticated(); } }

    One of the easiest mistakes to make with configuring Spring Security is to forget that these matchers apply to different processes, one is a request matcher for the whole filter chain, and the other is only to choose the access rule to apply.

    Combining Application Security Rules with Actuator Rules

    If you are using the Spring Boot Actuator for management endpoints, you probably want them to be secure, and by default they will be. In fact as soon as you add the Actuator to a secure application you get an additional filter chain that applies only to the actuator endpoints. It is defined with a request matcher that matches only actuator endpoints and it has an order of?ManagementServerProperties.BASIC_AUTH_ORDER?which is 5 fewer than the default?SecurityProperties?fallback filter, so it is consulted before the fallback.

    If you want your application security rules to apply to the actuator endpoints you can add a filter chain ordered earlier than the actuator one and with a request matcher that includes all actuator endpoints. If you prefer the default security settings for the actuator endpoints, then the easiest thing is to add your own filter later than the actuator one, but earlier than the fallback (e.g.?ManagementServerProperties.BASIC_AUTH_ORDER + 1). Example:

    @Configuration @Order(ManagementServerProperties.BASIC_AUTH_ORDER + 1) public class ApplicationConfigurerAdapter extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.antMatcher("/foo/**") ...; } }
    Note Spring Security in the web tier is currently tied to the Servlet API, so it is only really applicable when running an app in a servlet container, either embedded or otherwise. It is not, however, tied to Spring MVC or the rest of the Spring web stack, so it can be used in any servlet application, for instance one using JAX-RS.

    Method Security

    As well as support for securing web applications, Spring Security offers support for applying access rules to Java method executions. For Spring Security this is just a different type of "protected resource". For users it means the access rules are declared using the same format of?ConfigAttribute?strings (e.g. roles or expressions), but in a different place in your code. The first step is to enable method security, for example in the top level configuration for our app:

    @SpringBootApplication @EnableGlobalMethodSecurity(securedEnabled = true) public class SampleSecureApplication { }

    Then we can decorate the method resources directly, e.g.

    @Service public class MyService { @Secured("ROLE_USER") public String secure() { return "Hello Security"; } }

    This sample is a service with a secure method. If Spring creates a?@Bean?of this type then it will be proxied and callers will have to go through a security interceptor before the method is actually executed. If the access is denied the caller will get an?AccessDeniedException?instead of the actual method result.

    There are other annotations that can be used on methods to enforce security constraints, notably?@PreAuthorize?and?@PostAuthorize, which allow you to write expressions containing references to method parameters and return values respectively.

    Tip It is not uncommon to combine Web security and method security. The filter chain provides the user experience features, like authentication and redirect to login pages etc, and the method security provides protection at a more granular level.

    Working with Threads

    Spring Security is fundamentally thread bound because it needs to make the current authenticated principal available to a wide variety of downstream consumers. The basic building block is the?SecurityContext?which may contain an?Authentication?(and when a user is logged in it will be an?Authentication?that is explicitly?authenticated). You can always access and manipulate the?SecurityContext?via static convenience methods in?SecurityContextHolder?which in turn simply manipulate a?TheadLocal, e.g.

    SecurityContext context = SecurityContextHolder.getContext(); Authentication authentication = context.getAuthentication(); assert(authentication.isAuthenticated);

    It is?not?common for user application code to do this, but it can be useful if you, for instance, need to write a custom authentication filter (although even then there are base classes in Spring Security that can be used where you would avoid needing to use the?SecurityContextHolder).

    If you need access to the currently authenticated user in a web endpoint, you can use a method parameter in a?@RequestMapping. E.g.

    @RequestMapping("/foo") public String foo(@AuthenticationPrincipal User user) { ... // do stuff with user }

    This annotation pulls the current?Authentication?out of the?SecurityContext?and calls the?getPrincipal()?method on it to yield the method parameter. The type of the?Principal?in an?Authentication?is dependent on the?AuthenticationManager?used to validate the authentication, so this can be a useful little trick to get a type safe reference to your user data.

    If Spring Security is in use the?Principal?from the?HttpServletRequest?will be of type?Authentication, so you can also use that directly:

    @RequestMapping("/foo") public String foo(Principal principal) { Authentication authentication = (Authentication) principal; User = (User) authentication.getPrincipal(); ... // do stuff with user }

    This can sometimes be useful if you need to write code that works when Spring Security is not in use (you would need to be more defensive about loading the?Authentication?class).

    Processing Secure Methods Asynchronously

    Since the?SecurityContext?is thread bound, if you want to do any background processing that calls secure methods, e.g. with?@Async, you need to ensure that the context is propagated. This boils down to wrapping the?SecurityContext?up with the task (Runnable,?Callableetc.) that is executed in the background. Spring Security provides some helpers to make this easier, such as wrappers for?Runnable?and?Callable. To propagate the?SecurityContext?to?@Async?methods you need to supply an?AsyncConfigurer?and ensure the?Executor?is of the correct type:

    @Configuration public class ApplicationConfiguration extends AsyncConfigurerSupport { @Override public Executor getAsyncExecutor() { return new DelegatingSecurityContextExecutorService(Executors.newFixedThreadPool(5)); } }

    ?

    轉載于:https://www.cnblogs.com/davidwang456/p/6497071.html

    總結

    以上是生活随笔為你收集整理的Spring Security Architecture--官方的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    欧美亚洲成人xxx | 久久影院亚洲 | 亚洲一区二区麻豆 | 黄色三级在线观看 | 国产精品视频免费看 | 在线成人免费电影 | 久久久电影| 狠狠干夜夜爽 | 午夜精品999 | 九热精品 | 亚洲精品国产成人av在线 | 91中文字幕永久在线 | 久久免费精品 | 久久无码精品一区二区三区 | 天天躁日日 | 五月亚洲综合 | 久草视频在线看 | 成人国产精品av | 国产精品嫩草影院99网站 | 欧美 激情在线 | 超碰97人人射妻 | 精品一区二区日韩 | 欧美一区二区精美视频 | 青青啪 | 国产精品第| www.av小说 | 五月的婷婷 | 亚洲精品乱码久久久久久按摩 | 国产精品久久久久久久av大片 | 久久高清国产 | 久久99中文字幕 | 国产视频日韩视频欧美视频 | 亚洲视频在线免费观看 | 天天干天天色2020 | 狠狠撸电影 | 国产福利精品一区二区 | 少妇bbb| 免费观看成人网 | 色欧美成人精品a∨在线观看 | 婷婷丁香狠狠爱 | 亚洲免费色 | 狠狠躁日日躁狂躁夜夜躁 | 国产成人黄色网址 | 91精品小视频 | 少妇按摩av| 男女视频久久久 | 久久久午夜精品理论片中文字幕 | 欧美中文字幕久久 | 国产精品成人一区 | 国产麻豆精品在线观看 | 久热免费在线观看 | 美女免费视频一区 | 国产免费二区 | 97在线视 | 免费观看黄 | 免费看黄的视频 | 亚洲精品视频免费在线 | 久久手机免费视频 | 亚洲一级片在线看 | 欧美激情在线看 | 欧美在线视频二区 | 久久久久久久久免费视频 | 又色又爽又激情的59视频 | 久久精品国产亚洲精品2020 | 国产人成在线观看 | 99热手机在线观看 | www.婷婷com| 69精品视频在线观看 | www.婷婷com | 91视频免费国产 | 久久久毛片| 99热在线观看免费 | 久免费 | 夜夜操夜夜干 | 国产96在线观看 | 久久免费看视频 | 久久国产视频网站 | 激情视频一区二区 | 午夜精品麻豆 | 国产精品99免费看 | 中文字幕在线免费观看 | 黄色福利视频网站 | 亚洲美女久久 | 99 色| 日韩精品欧美精品 | 亚洲国产黄色片 | 亚洲少妇天堂 | 亚洲专区在线视频 | 欧美激情综合五月 | 日韩欧美视频在线免费观看 | a视频免费 | 美国三级黄色大片 | 91大神一区二区三区 | 午夜视频在线观看一区二区三区 | 久久免费视频7 | 西西4444www大胆视频 | 91精品国产99久久久久久久 | 亚洲视频一| 国产区精品视频 | 中文av免费| 日本字幕网| 在线免费观看国产精品 | 91高清免费在线观看 | 国产高清黄 | 日韩在线观 | 国产一区免费视频 | 日韩综合精品 | 久青草影院| 天天射天| 国产丝袜在线 | 久久草视频 | 国产精品一区二区三区在线免费观看 | 久久久久激情电影 | 人人干,人人爽 | 99精品视频在线免费观看 | 欧美另类xxx| 天堂av中文字幕 | 天天操 夜夜操 | 97在线精品| 国产一区二区三区午夜 | 最新日本中文字幕 | 国产精品久久久久久久久久久不卡 | 在线播放国产一区二区三区 | 日韩在线第一区 | 麻豆国产视频下载 | 17videosex性欧美 | 黄色亚洲片 | 欧美日韩国产一二三区 | 天天操夜夜爱 | 国产网站色| 亚洲免费公开视频 | 久久大香线蕉app | 亚洲国产日韩欧美在线 | 麻豆久久久久久久 | 久久深夜 | 日日天天狠狠 | 在线岛国av | 欧美日韩性 | 日韩精品一区二区三区高清免费 | 99精品国产一区二区 | 在线视频一区二区 | 人人爽久久涩噜噜噜网站 | 日韩成人免费在线 | 手机在线视频福利 | 日韩在线免费播放 | 亚洲激情在线播放 | 亚洲精品永久免费视频 | 色天天综合久久久久综合片 | 91秒拍国产福利一区 | 一区二区精品久久 | 园产精品久久久久久久7电影 | 天天干天天搞天天射 | 久久久网| 国产欧美日韩一区 | 狠狠色伊人亚洲综合成人 | 亚洲精品视频在线观看免费视频 | 欧美精品一区二区性色 | 福利视频网址 | 国产片网站 | 激情伊人五月天久久综合 | 成人国产综合 | 午夜精品福利一区二区三区蜜桃 | 亚洲h在线播放在线观看h | 久久综合中文色婷婷 | 国产精品手机视频 | 美女网站在线观看 | 99 色| 91免费版在线 | 日韩精品免费一区 | 亚洲自拍av在线 | 久久99精品国产99久久 | 高清视频一区二区三区 | 96精品在线| 日韩精品视频在线观看免费 | 国产91av视频在线观看 | 国产精品久久久久久久久久久免费看 | 欧美 亚洲 另类 激情 另类 | 久久免费视频6 | 亚洲欧美日韩不卡 | 激情五月婷婷综合网 | 免费网站v| 成人在线一区二区三区 | 精品一区二区三区香蕉蜜桃 | 欧美激情片在线观看 | 91在线中文字幕 | 久草在线资源视频 | av免费在线免费观看 | 日韩1页 | 色www精品视频在线观看 | 99精品免费在线观看 | 日韩伦理片一区二区三区 | 久久不卡视频 | 黄色a级片在线观看 | 国产在线播放一区 | 国产精品久久久久久久久久久免费 | 国产精品一区二区三区久久久 | 亚洲综合色播 | 91精品视频免费看 | av电影免费 | 九九热视频在线免费观看 | 久久精品免视看 | 一区二区三区视频在线 | 人人干免费 | 九九久久国产精品 | 五月婷婷在线观看 | 日狠狠 | 五月婷婷一区 | 亚州av网站大全 | 色综合久久中文综合久久牛 | 国产黄色av网站 | 日韩毛片精品 | 国产一级电影免费观看 | 国产精品观看视频 | 视频一区二区三区视频 | 成人在线超碰 | 99在线热播精品免费 | 国产精品永久久久久久久久久 | 中文字幕 国产精品 | 久精品视频在线 | 亚洲免费精品一区二区 | 欧美精品xx| 伊人久久电影网 | 亚洲一区二区精品视频 | 涩涩资源网 | 免费看毛片在线 | 五月天天色 | 天天干天天射天天操 | 亚洲免费在线观看视频 | 欧美日韩一区三区 | 搡bbbb搡bbb视频| 国产特级毛片aaaaaaa高清 | 日韩特黄一级欧美毛片特黄 | 天堂av免费观看 | 日韩欧美在线免费观看 | 亚洲欧美激情精品一区二区 | 韩国精品福利一区二区三区 | 国产成人高清av | 国内三级在线观看 | 五月婷婷导航 | 免费进去里的视频 | 天天色天天操综合 | 一本—道久久a久久精品蜜桃 | 中文字幕高清在线播放 | 日本中文字幕影院 | 正在播放 久久 | 激情综合色图 | 日韩电影一区二区三区在线观看 | 精品久久久99 | 国产一级片在线播放 | a黄色一级 | 日韩网站中文字幕 | 麻豆精品在线视频 | 欧美在线观看禁18 | 久久久黄色 | 在线欧美最极品的av | www免费网站在线观看 | 美女视频a美女大全免费下载蜜臀 | 国产一级片久久 | 色天天天| 成年人在线免费看视频 | 成人一级黄色片 | 狠狠色狠狠色终合网 | 亚洲精选久久 | 国产一区二区免费 | 99人成在线观看视频 | 亚洲日本成人 | 深夜福利视频一区二区 | 最近中文字幕在线播放 | 毛片一区二区 | 亚洲va天堂va欧美ⅴa在线 | 国产免费一区二区三区最新6 | 99久久国产免费免费 | 精品国产电影一区 | 欧美精品在线一区 | 最近中文字幕大全中文字幕免费 | 免费a网 | 国产精品视频99 | 日韩试看| 亚洲精品视频网 | 久久久久伦理电影 | 久久www免费人成看片高清 | 亚洲欧美日韩国产精品一区午夜 | 99这里都是精品 | av看片网| 国产亚洲精品女人久久久久久 | 中文字幕免费成人 | 九九综合久久 | 久久99国产精品久久99 | 色婷婷成人| 亚洲欧洲精品一区二区精品久久久 | 高清av免费一区中文字幕 | 一区二区三区四区精品视频 | 亚洲国产精品小视频 | 夜夜爽夜夜操 | 欧美成人手机版 | 亚洲天堂网在线视频观看 | 人人干网| 99热99热 | 久久精选 | 99电影456麻豆 | 黄色福利网 | 国产一区成人 | 成 人 免费 黄 色 视频 | 亚洲经典视频 | 精品久久久久久久久久久久久 | 69热国产视频 | 国产精品综合久久久久久 | 丁香六月婷婷开心婷婷网 | 国产精品国产精品 | 午夜精品999 | 99re热精品视频 | av大全在线看 | 免费福利小视频 | 91插插插免费视频 | 国产亚洲小视频 | 亚洲精品免费在线播放 | www.99av| 国产不卡一区二区视频 | 国产精品18久久久久久久 | 国产精品第三页 | av电影在线观看完整版一区二区 | 日韩欧美在线中文字幕 | 久草在线手机观看 | 国产高清视频色在线www | 亚洲一区黄色 | 欧美高清视频不卡网 | 美女视频免费精品 | 国产69精品久久久久久 | 超碰在线公开免费 | 日韩免费一级a毛片在线播放一级 | 最近免费中文字幕mv在线视频3 | 日韩免费在线观看网站 | 五月天久久综合网 | 91热爆在线观看 | 国产一区二区精品久久 | 亚洲精品视频免费观看 | 成人久久18免费网站 | 中文字幕在线观看视频一区 | www.国产在线 | 米奇四色影视 | 国产不卡一区二区视频 | 国产91aaa | 久久久www成人免费精品张筱雨 | 免费黄色在线网址 | 免费在线观看亚洲视频 | 草久久久久 | 91豆花在线观看 | 五月花激情 | 玖玖在线免费视频 | 久久97精品 | 欧美在线观看视频 | 国产视频高清 | 色婷婷欧美 | 看黄色91 | 一级片在线 | 亚洲精品乱码久久久久久久久久 | 免费人人干 | 中文字幕高清在线 | 免费毛片一区二区三区久久久 | 国产精品久久一区二区三区不卡 | 国产99久久精品一区二区300 | 日韩精品第1页 | 国产精品2018| 日韩二区在线播放 | 在线观看成人av | 久久成人一区 | 尤物一区二区三区 | 人交video另类hd | 九九免费观看全部免费视频 | 日韩在线观看你懂的 | 亚洲国产欧美在线人成大黄瓜 | 久草网免费 | 中国黄色一级大片 | 91久久精品一区二区三区 | 婷婷视频在线 | 911久久 | 久久久国内精品 | 亚洲国产精品免费 | 在线 视频 一区二区 | 免费黄色特级片 | 久久综合久久综合九色 | 国产中文字幕三区 | 免费在线观看成年人视频 | 久久乐九色婷婷综合色狠狠182 | 国产黄色在线网站 | 国外成人在线视频网站 | 精品久久久久免费极品大片 | 久久久久久美女 | 热久久免费国产视频 | 久久99精品久久久久久三级 | 热re99久久精品国产99热 | 国产精成人品免费观看 | 亚洲综合在线观看视频 | 欧美性粗大hdvideo | 狠狠色香婷婷久久亚洲精品 | 美女性爽视频国产免费app | 日韩色中色 | 特级xxxxx欧美| 天天激情天天干 | 成片免费观看视频大全 | 国产 欧美 在线 | 免费成人短视频 | 9在线观看免费高清完整版 玖玖爱免费视频 | 日韩精品一区二 | 婷婷网五月天 | 亚洲第一色 | 亚洲一区二区麻豆 | 国产精品对白一区二区三区 | 欧美日韩视频在线 | 国产精品福利无圣光在线一区 | 九九热在线视频免费观看 | 丁香婷婷久久久综合精品国产 | 久久久免费看片 | 五月婷婷色播 | 久久一级电影 | 国内视频在线 | 六月丁香激情综合色啪小说 | 亚洲最大av在线播放 | 欧美精品v国产精品 | 99热这里只有精品在线观看 | 黄色av网站在线观看 | 国产高清在线永久 | 婷婷激情综合 | 欧美做受69| 成人在线免费观看网站 | 日韩国产欧美在线视频 | 91精品在线免费视频 | 在线观看视频你懂得 | 激情动态 | 国产精品国产三级国产不产一地 | av片中文 | 丁香午夜 | 69精品视频在线观看 | 超碰97免费在线 | 欧美久久久久久久久久久久久 | 91视频麻豆视频 | 精品国产一区二区三区四 | 少妇高潮冒白浆 | 久久久久久久久久国产精品 | 日韩在线视频网站 | 中文字幕在线视频一区二区三区 | 精品高清视频 | 人人澡人人爱 | 日韩视频欧美视频 | 精品国产一区二区在线 | 欧美一级激情 | 久久精选视频 | 99久久99久久 | 91色吧| 亚洲精品中文在线 | 久久国产视屏 | 久久高清 | 久久午夜网 | 日韩性xxxx| 成人在线一区二区三区 | 96香蕉视频 | 97超碰成人在线 | 久久精品女人毛片国产 | 久久特级毛片 | 久久久久久国产精品亚洲78 | 久久 精品一区 | 天天爽夜夜爽人人爽一区二区 | 精品在线二区 | 99久久爱| 激情偷乱人伦小说视频在线观看 | 欧美另类重口 | 香蕉在线视频观看 | 亚洲精品国偷自产在线99热 | 在线综合 亚洲 欧美在线视频 | 黄色一级网 | 日韩电影在线观看一区二区 | 少妇bbw揉bbb欧美 | 日韩精品 在线视频 | 99热国产精品 | 亚洲无吗视频在线 | 9999在线视频 | 久久久久久网站 | 91一区一区三区 | 国产一级h | 911免费视频 | av网站在线免费观看 | 久久久久久国产精品999 | 欧美影片 | 久久草| 日韩欧美一区视频 | 日韩视 | 亚洲美女视频在线观看 | 黄色大全视频 | 男女精品久久 | 在线天堂中文www视软件 | www.在线观看视频 | www.天天综合 | 久久亚洲欧美日韩精品专区 | 日本精品久久久久中文字幕 | 欧美色操| 天天干一干 | 亚洲开心激情 | 色七七亚洲影院 | 婷婷成人亚洲综合国产xv88 | 丁香六月激情 | 天堂av中文字幕 | 国产精品久久影院 | 在线免费黄网站 | 成年人黄色免费视频 | 亚洲高清国产视频 | 亚洲精品白浆高清久久久久久 | 久久草在线精品 | 一本一道波多野毛片中文在线 | 手机在线视频福利 | 日本精a在线观看 | 日韩av在线一区二区 | 亚洲精品在线视频 | 久久99精品国产麻豆婷婷 | 免费黄色一区 | 久久成视频| 欧美日韩国产精品一区二区亚洲 | 国产高清99 | 中文字幕第一 | 久久九九久久 | 国产精品久久99综合免费观看尤物 | 中文字幕在线资源 | 亚洲欧洲精品一区二区精品久久久 | 久久视频精品在线 | 狠狠干美女 | 欧美一级视频在线观看 | 日批视频在线 | 97av.com | 黄色成人av网址 | 91亚洲网 | 国产在线一区二区三区播放 | 51久久成人国产精品麻豆 | 欧美贵妇性狂欢 | 成人动漫精品一区二区 | 免费在线中文字幕 | 国产人成一区二区三区影院 | 性色av一区二区三区在线观看 | 午夜视频黄| 国产精品久久嫩一区二区免费 | av在线最新 | 日韩三级视频在线观看 | 亚洲欧美视频 | 国产最新网站 | 98超碰在线 | 天天干,狠狠干 | 国产精品乱码一区二三区 | 91福利社在线观看 | 高清不卡一区二区在线 | 欧美日韩国产在线一区 | 一二三区av | 丝袜网站在线观看 | 精品99久久久久久 | 顶级欧美色妇4khd | 午夜久久美女 | 中文字幕免费高 | 91免费版在线 | 精品专区一区二区 | 91日本在线播放 | 国产成人精品福利 | 国产剧情一区二区 | 特级西西www44高清大胆图片 | 911国产| 亚洲成人av在线播放 | 成人在线视频你懂的 | 成人av电影在线观看 | 伊人影院得得 | 国产高清在线观看 | 日日夜夜免费精品 | 成人免费xxx在线观看 | 看片网站黄 | 夜夜天天干 | 爱爱av网站| 美女黄频 | 久草国产视频 | 免费午夜在线视频 | 99在线免费视频观看 | 亚洲综合婷婷 | 久久综合中文色婷婷 | 亚洲在线激情 | 偷拍精偷拍精品欧洲亚洲网站 | 亚洲国产精品人久久电影 | 深爱婷婷网 | 国产亚洲免费观看 | 人人狠狠综合久久亚洲 | 黄影院| 日韩av网址在线 | 免费性网站 | 在线观看免费黄色 | 最新超碰在线 | 久久激情视频免费观看 | 亚洲综合黄色 | 久久久污| 欧美大香线蕉线伊人久久 | 超碰人人av | 国产视频色 | 成人一区二区三区在线 | 成人黄色在线观看视频 | a久久久久| 麻豆国产网站入口 | 久久久久久久久久久精 | 久草视频免费播放 | 欧美作爱视频 | 欧美日韩国产精品一区 | 久久怡红院 | 国产精品九九久久久久久久 | av网址在线播放 | 国产亚洲婷婷 | 日韩二区在线观看 | 中文字幕高清免费日韩视频在线 | 久久久免费播放 | 国产精品久久久久永久免费看 | 久久亚洲国产精品 | 国产精品一区二区三区免费看 | 欧美日韩一区久久 | 亚洲美女免费精品视频在线观看 | 三上悠亚一区二区在线观看 | 久久激情五月婷婷 | 婷婷丁香在线视频 | 午夜国产影院 | 精品国产三级 | 亚洲影视资源 | 国产1级毛片 | 成人欧美一区二区三区黑人麻豆 | 在线播放91 | 成人av免费在线观看 | 欧美日性视频 | 亚洲一区视频在线播放 | 一区二区精品在线观看 | 看毛片的网址 | 草久久影院 | 久草在线最新视频 | 欧美在线观看视频 | 日韩在线观看第一页 | 欧洲色综合 | japanesexxx乱女另类 | 麻豆 91 在线 | 婷婷激情五月综合 | 九七人人干 | 91中文字幕在线播放 | 国产一区福利在线 | 日日夜夜天天干 | 丁香婷婷激情国产高清秒播 | 在线播放第一页 | 成人国产精品一区 | 91亚洲精品久久久久图片蜜桃 | 四虎在线观看网址 | 天天射天天射天天 | 久久九九影院 | 成人理论电影 | www欧美日韩 | 在线看片一区 | 中文字幕国产一区 | 亚洲黄色免费在线 | 五月婷婷色 | 亚洲国产丝袜在线观看 | www.com.黄| 麻豆久久久 | 日韩视频免费在线 | 97热久久免费频精品99 | 在线成人国产 | 日本三级中文字幕在线观看 | 91中文在线观看 | 玖玖色在线观看 | 西西444www| 国产精品成人在线观看 | 少妇精品久久久一区二区免费 | 欧美一区二区三区在线播放 | 九九久久久久久久久激情 | 免费看的黄网站软件 | 最近中文字幕久久 | 免费观看的av网站 | av中文字幕亚洲 | 久久a热6 | 日本久久久久久久久久久 | 一区二区三区四区五区在线 | 香蕉视频啪啪 | 久久久久久国产精品 | 久久综合免费视频 | 国产精品毛片一区二区在线看 | 国产视频丨精品|在线观看 国产精品久久久久久久久久久久午夜 | 香蕉视频在线免费 | 97在线公开视频 | 欧美一区二区免费在线观看 | 99热这里精品 | 国产精品综合久久久久久 | 日韩精品极品视频 | 婷婷激情五月 | 久久久国产在线视频 | 久久免费在线观看视频 | 欧美日韩中文在线观看 | 日本久久99| 天天射,天天干 | 九九精品视频在线观看 | 国产中文字幕在线播放 | 日韩欧美精品一区 | 久久国产精品久久w女人spa | 99精品免费 | 亚洲永久av| 91亚洲狠狠婷婷综合久久久 | 亚洲成人av一区 | 激情视频一区二区 | 中文av在线免费观看 | 91porny九色91啦中文 | 亚洲国产合集 | 玖玖在线视频观看 | 久久夜视频 | 天天色综合1 | 亚洲成人av免费 | 国产精品国产三级国产aⅴ9色 | 天操夜夜操 | 国产精品久久久久久久午夜片 | 97碰在线| 97国产大学生情侣酒店的特点 | 亚洲欧美日本A∨在线观看 青青河边草观看完整版高清 | 久久国内精品 | 午夜在线观看一区 | 操操碰| 91资源在线 | 亚洲午夜久久久影院 | 国产在线a视频 | 热re99久久精品国产99热 | 日本精品在线看 | 中文字幕在线观看第三页 | 久久免费国产精品 | 毛片www| 久草在线一免费新视频 | 欧美极品一区二区三区 | 欧美精品做受xxx性少妇 | 久久视频国产精品免费视频在线 | 99国产视频 | 亚洲毛片久久 | 人人干人人艹 | 国产伦精品一区二区三区在线 | 亚洲 欧美 国产 va在线影院 | 午夜精品久久久久久久99热影院 | 国产在线观看你懂得 | 天天干天天草 | 国产资源中文字幕 | 一级片免费视频 | 精品国产成人av在线免 | 亚洲视频99| 免费观看mv大片高清 | 久久天堂精品视频 | 青青河边草免费观看完整版高清 | 免费av片在线 | 国产精久久 | 9999在线观看| 久久99最新地址 | 黄色1级大片 | 天天操天 | 男女激情免费网站 | 国产成人av | 女人18毛片a级毛片一区二区 | 日日夜夜天天人人 | 久久久精品一区二区 | 天天躁天天躁天天躁婷 | 91av在线免费观看 | 在线视频久 | 国产精品免费视频观看 | 91精品欧美一区二区三区 | 综合网五月天 | 久久精品屋 | 欧美另类重口 | 欧美日韩国产区 | 日韩精品视频免费专区在线播放 | 一级欧美一级日韩 | 黄色免费视频在线观看 | 久久成电影| 国产亚洲精品久久久久久无几年桃 | 91亚洲视频在线观看 | 国产精品去看片 | 九九热在线精品视频 | 国产精品亚洲人在线观看 | 日韩av网页 | 天天综合天天综合 | 色综合亚洲精品激情狠狠 | 久久久免费在线观看 | 久久视频这里有久久精品视频11 | 国产一区二区久久久久 | 久久久精品视频成人 | 久久夜夜爽 | 亚洲精品国产品国语在线 | 国内精品久久天天躁人人爽 | 麻豆91精品91久久久 | 亚洲综合激情小说 | 干干日日 | 婷婷色五 | 久久国产精品免费 | 欧美在线久久 | 黄色综合| www亚洲一区 | 久草视频中文 | 久久草网 | 国产在线成人 | 亚洲免费色 | 欧美日韩免费一区二区 | 久久精品久久精品久久39 | 天天爽天天爽夜夜爽 | 最新动作电影 | 欧美欧美 | 成人在线视频一区 | 免费碰碰 | 国内精品久久久精品电影院 | 91色在线观看 | 性日韩欧美在线视频 | 久久免费精品一区二区三区 | 欧美一级片免费播放 | 国产精品久久久久久久久久久久 | 日韩欧美亚洲 | 91成人久久| 成人免费观看网站 | 欧美日韩在线观看一区二区三区 | 久久精精品视频 | 在线免费91 | 玖玖在线免费视频 | 免费av高清 | 美女网站免费福利视频 | 91黄色在线看 | 日韩高清在线不卡 | 在线亚洲高清视频 | 婷婷五情天综123 | 色多多在线观看 | 免费看成人片 | 美女国产 | 中文在线a在线 | 国产精品美女久久久免费 | 日韩夜夜爽 | 91视频国产高清 | 日韩电影中文,亚洲精品乱码 | 人人爱在线视频 | 97在线观看免费观看高清 | 日本在线观看视频一区 | 国产精品一区二区三区免费视频 | 啪啪肉肉污av国网站 | 97福利 | 欧美99热| 免费一级日韩欧美性大片 | 91精品免费看 | 91麻豆精品国产91久久久久久 | 中文字幕 国产专区 | 婷婷伊人综合 | 在线电影播放 | 四虎在线免费视频 | 岛国大片免费视频 | 精品一区二区精品 | 国内精品视频免费 | a黄色一级 | 国产一区二区在线观看视频 | 久热久草在线 | 久久综合色婷婷 | 久久久久亚洲精品男人的天堂 | 国产日女人| 成人午夜电影在线观看 | 992tv又爽又黄的免费视频 | 久久不色| 国产视频日韩 | 国产三级午夜理伦三级 | 亚洲更新最快 | 福利电影久久 | 国产不卡在线观看 | 中文字幕 欧美性 | 91精品办公室少妇高潮对白 | 日韩在线观看第一页 | 波多野结衣视频一区 | 欧美日韩视频在线播放 | 国产一级做a爱片久久毛片a | 亚洲精品国产精品国自产观看浪潮 | 日韩在线激情 | 精品一区二区在线看 | 91精品国产成人观看 | 免费97视频 | 国产精品免费视频观看 | 九九久久免费 | 最近日本mv字幕免费观看 | 亚洲精品激情 | 国产伦理久久精品久久久久_ | 亚洲视频综合在线 | 亚洲国产中文字幕在线观看 | 一级成人免费 | 一级成人免费视频 | 欧美色久| 亚洲成色777777在线观看影院 | 在线观看日韩精品 | 久免费| 久久香蕉电影 | 国产精品美女久久久 | 日本在线观看黄色 | 国产裸体无遮挡 | 成人av片免费看 | 亚洲成人av在线 | 成年人免费在线观看网站 | 一级免费观看 | 精品中文字幕视频 | 国产精品一区二区三区观看 | 中文字幕在线观看第一区 | 国产成人精品一区二区 | 久久久久一区二区三区四区 | 亚洲精品国产综合99久久夜夜嗨 | 不卡的av片 | 欧美va天堂va视频va在线 | 亚洲国产中文字幕 | 久久国产精品免费视频 | 在线观看韩日电影免费 | 久久优 | 国产探花 | 丁香综合 | 黄免费网站 | 特级西西www44高清大胆图片 | av色影院 | 亚洲一区免费在线 | 黄污视频大全 | 日韩精品中文字幕在线播放 | 日韩激情在线视频 | 狠狠色综合网站久久久久久久 | 久久综合婷婷综合 | 久久色网站 | 97色婷婷 | 国产99色 | 欧美专区亚洲专区 | 亚洲 欧美日韩 国产 中文 | 久久国产精彩视频 | 麻豆视频免费播放 | 西西大胆免费视频 | 国产中文字幕免费 | av动图 | 国模精品一区二区三区 | 偷拍精品一区二区三区 | 日韩中文久久 | 久草综合视频 | 在线日韩三级 | 91大神免费在线观看 | 亚洲视频免费在线 | 欧美色一色 | 色婷婷97| 最新中文在线视频 | 射久久 | 天堂av网址 | 1024手机在线看 | 日本久久综合网 | 欧美日韩国产综合一区二区 | 91精品国产综合久久福利 | 国产美女免费观看 | www操操| 中文字幕人成乱码在线观看 | 亚洲成人一区 | 国产日产欧美在线观看 | 国产99久久精品 | 综合铜03 | 日韩免费成人av | 欧美性极品xxxx娇小 | 久久久久久久久毛片 | 亚洲精品视频久久 | 在线观看岛国片 | 麻豆影视在线免费观看 | 五月天婷婷在线观看视频 | 日韩在线观看中文 | 在线观看视频黄色 | 久久久久久久国产精品影院 | 人人爽影院 | 国产xxxx做受性欧美88 | 97品白浆高清久久久久久 | 欧美影片 | 日本精品视频在线 | 国产精品h在线观看 | 久久久久女人精品毛片九一 | 国产精品不卡av | 中文字幕在线观看第一区 | 国产精品视频永久免费播放 | 在线观看成人 | 国产九九九九九 | 国产亚洲资源 | 日韩免费高清 | 91精品视频在线免费观看 | 久久久久北条麻妃免费看 | 99视频在线观看一区三区 | av电影一区二区三区 | 超碰97免费 | 免费看片成年人 | 亚洲精区二区三区四区麻豆 | 国产一区二区三区免费在线 | 波多野结衣综合网 | 在线不卡中文字幕播放 | av在线不卡观看 | 91九色视频导航 | 免费日韩高清 | 欧美xxxxx在线视频 | 国产精品久久片 | 国产不卡视频在线 | 精品 一区 在线 | 国产综合视频在线观看 | 美州a亚洲一视本频v色道 | 国产成人精品亚洲日本在线观看 | 亚洲精品免费在线 | 国产精品成久久久久 | 亚洲aⅴ一区二区三区 | 免费在线中文字幕 | 久久精品国产99 | 久久艹影院| 欧美一级片在线播放 |