• Session, Token and SSO 有什么区别


    Session, Token and SSO 有什么区别

    Basic Compareation 

    Session-based Authentication

    In Session-based Authentication the Server does all the heavy lifting server-side. Broadly speaking a client authenticates with its credentials and receives a session_id (which can be stored in a cookie) and attaches this to every subsequent outgoing request. So this could be considered a "token" as it is the equivalent of a set of credentials.There is however nothing fancy about this session_id-String. It is just an identifier and the server does everything else. It is stateful. It associates the identifier with a user account (e.g. in memory or in a database). It can restrict or limit this session to certain operations or a certain time period and can invalidate it if there are security concern and more importantly it can do and change all of this on the fly. Furthermore it can log the users every move on the website(s). Possible disadvantages are bad scale-ability (especially over more than one server farm) and extensive memory usage.

    Token-based Authentication

    In Token-based Authentication no session is persisted server-side (stateless). The initial steps are the same. Credentials are exchanged against a token which is then attached to every subsequent request (It can also be stored in a cookie).However for the purpose of decreasing memory usage, easy scale-ability and total flexibility (tokens can be exchanged with another client) a string with all the necessary information is issued (the token) which is checked after each request made by the client to the server.


    Detail Comparation

    Session Based Authentication

    Session based authentication has been the default, tried-and-true method for handling user authentication for a long time.Session based authentication is stateful. This means that an authentication record or session must be kept both server and client-side. The server needs to keep track of active sessions in a database, while on the front-end a cookie is created that holds a session identifier, thus the name cookie based authentication. Let's look at the flow of traditional cookie based authentication:

    1. User enters their login credentials
    2. Server verifies the credentials are correct and creates a session which is then stored in a database
    3. A cookie with the session ID is placed in the users browser
    4. On subsequent requests, the session ID is verified against the database and if valid the request processed
    5. Once a user logs out of the app, the session is destroyed both client and server side


    Token-Based Authentication

    Token-based authentication has gained prevalence over the last few years due to rise of single page applications, web APIs, and the Internet of Things (IoT). When we talk about authentication with tokens, we generally talk about authentication with JSON Web Tokens (JWTs). While there are different ways to implement tokens, JWTs have become the de-facto standard. With this context in mind, the rest of the article will use tokens and JWTs interchangeably.Token-based authentication is stateless. The server does not keep a record of which users are logged in or which JWTs have been issued. Instead, every request to the server is 

    accompanied by a token which the server uses to verify the authenticity of the request. The token is generally sent as an addition Authorization header in form of Bearer {JWT}, but can additionally be sent in the body of a POST request or even as a query parameter. Let's see how this flow works:

    1. User enters their login credentials
    2. Server verifies the credentials are correct and returns a signed token
    3. This token is stored client-side, most commonly in local storage - but can be stored in session storage or a cookie as well
    4. Subsequent requests to the server include this token as an additional Authorization header or through one of the other methods mentioned above
    5. The server decodes the JWT and if the token is valid processes the request
    6. Once a user logs out, the token is destroyed client-side, no interaction with the server is necessary

     

    Single sign on (SSO) Authentication

    Sooner or later web development teams face one problem: you have developed an application at domain X and now you want your new deployment at domain Y to use the same login information as the other domain. In fact, you want more: you want users who are already logged-in at domain X to be already logged-in at domain Y. This is what SSO is all about.The obvious solution to this problem is to share session information across different domains. However, for security reasons, browsers enforce a policy known as the same origin policy. This policy dictates that cookies (and other locally stored data) can only be accessed by its creator (i.e. the domain that originally requested the data to be stored). In other words, domain X cannot access cookies from domain Y or vice versa. This is what SSO solutions solve in one way or the other: sharing session information across different domains.

    Refereence URLs
    https://stackoverflow.com/questions/40200413/sessions-vs-token-based-authentication
    https://auth0.com/blog/cookies-vs-tokens-definitive-guide/
    https://security.stackexchange.com/questions/81756/session-authentication-vs-token-authentication
    https://auth0.com/blog/what-is-and-how-does-single-sign-on-work/

  • 相关阅读:
    存储过程之基本语法
    SQL存储过程概念剖析
    SQL2005之SA提权总结
    关于存储过程
    Java开发环境之------MyEclipse快捷键和排除错误第一选择ctrl+1(***重点***:ctrl+1,快速修复---有点像vs中的快速using
    MyEclipse Servers视窗出现“Could not create the view: An unexpected exception was thrown”错误解决办法
    艾泰路由器端口映射怎么设置
    常用端口
    jdbc注册驱动 class.forName()
    MyEclipse不能自动编译解决办法总结
  • 原文地址:https://www.cnblogs.com/pugang/p/8490879.html
Copyright © 2020-2023  润新知