Alice: 你好,Bob,我最近在研究统一身份认证平台,想了解它是怎么工作的。
Bob: 好问题!统一身份认证平台的核心是让用户使用一个账号登录多个系统。我们可以用OAuth2.0协议来实现。
Alice: 那演示功能是怎么集成进去的呢?
Bob: 演示功能通常用于测试或展示,比如模拟用户登录过程。我们可以用JWT(JSON Web Token)来做令牌验证。
Alice: 能给我看个例子吗?
Bob: 当然可以。下面是一个简单的Python代码示例,演示如何生成和验证JWT令牌:
from flask import Flask, request, jsonify
import jwt
import datetime
app = Flask(__name__)
SECRET_KEY = 'your-secret-key'
@app.route('/login', methods=['POST'])
def login():
username = request.json.get('username')
password = request.json.get('password')
# 这里应校验用户名密码
if username == 'admin' and password == '123456':
payload = {
'username': username,
'exp': datetime.datetime.utcnow() + datetime.timedelta(hours=1)
}
token = jwt.encode(payload, SECRET_KEY, algorithm='HS256')
return jsonify({'token': token})
else:
return jsonify({'error': 'Invalid credentials'}), 401
@app.route('/protected', methods=['GET'])
def protected():
token = request.headers.get('Authorization')
if not token:
return jsonify({'error': 'Missing token'}), 401
try:
payload = jwt.decode(token, SECRET_KEY, algorithms=['HS256'])
return jsonify({'message': f'Welcome {payload["username"]}!'})
except jwt.ExpiredSignatureError:
return jsonify({'error': 'Token expired'}), 401
except jwt.InvalidTokenError:
return jsonify({'error': 'Invalid token'}), 401
if __name__ == '__main__':
app.run(debug=True)
Alice: 这个代码看起来不错,那功能清单中应该包含哪些内容?
Bob: 功能清单通常包括:用户注册、登录、令牌生成、权限验证、注销等功能。演示功能可以简化为模拟登录和访问受保护资源。
Alice: 明白了,谢谢你的讲解!
Bob: 不客气,有需要随时问我。