我有一个现有的项目是建立在:
我正在重写前端,将其移动到Angular 8,我想利用firebase的功能。
我目前正在集成身份验证功能(用户名/密码、谷歌、twitter、facebook等)
我在考虑我的下一步:
我在想象这样的事情:
这样行吗?有什么建议吗?
我是这样做的:
在客户端(Angular应用程序),我使用ngx auth firebaseui来显示登录表单。
在表单上,我设置了处理身份验证成功的回调:
login.component.html
<ngx-auth-firebaseui (onSuccess)="successfulLogin($event)"
(onError)="printError($event)">
</ngx-auth-firebaseui>
回调的代码在这里。从Firebase User对象中,我调用方法getIdTokenResult()来获取Firebase JWT。然后我通过身份验证服务调用我的PHP后端
login.component.ts
successfulLogin(user:User) {
console.log(user);
user.getIdTokenResult().then((idTokenResult:IdTokenResult)=> {
console.log(idTokenResult.token);
let token : string = idTokenResult.token;
let rcqJWTToken = this.authenticationService.authenticate( { token } as FirebaseJWT);
rcqJWTToken.subscribe((rcqToken:string)=> console.log("RCQ JWT Token : '"+rcqToken+"'"));
this.router.navigate['/welcome'];
});
}
在这里,我将Firebase JWT传输到我的php后端身份验证。服务ts
authenticate(firebaseJWTToken:FirebaseJWT):Observable<String>{
return this.http.post<String>(this.authenticationURL, firebaseJWTToken, httpOptions)
.pipe(
tap(_ => console.log('fetched RCQ JWT')),
catchError(this.handleError<String>('authenticate', ""))
);
}
在服务器端:
我将GOOGLE_应用程序_凭据设置为env var,就像部署在GOOGLE App Engine上一样
putenv(“GOOGLE_应用程序_凭证=/Users/myuser/.cred/GCP-project-ID.json”)
我使用Slimframework,所以我在依赖项中实例化Firebase对象。php文件。使用env var,Firebase不需要其他任何东西。点击这里:https://firebase-php.readthedocs.io/en/4.32.0/setup.html
use Kreait\Firebase;
use Kreait\Firebase\Factory;
/**
* Used to authenticate a firebase user, from it's Firebase JWT
* @property Firebase $firebase
* @param \Slim\Container $c
* @return Firebase
*/
$container['firebase'] = function (\Slim\Container $c)
{
$firebase = (new Factory)->create();
return $firebase;
};
下面是进行身份验证的路径:
$app->post(getPrefix().'/firebase-authenticate', function($request, $response, $args) use ($app)
{
$token = $this->clientInputValidator->validateString("token" , $request->getParsedBodyParam("token" ), 1500 , true );
$username = "";
Logger::dataForLogging(new LoggingEntity(null, ["username"=>$username]));
try
{
$verifiedIdToken = $this->firebase->getAuth()->verifyIdToken($token);
}
catch (InvalidToken $e)
{
$response401 = $response->withStatus(401);
$response401->getBody()->write(json_encode(["error" =>"Authentication error"]));
$this->logger->error("Firebase authentication error", array('username' => $username, 'token' => $token));
return $response401;
}
$uid = $verifiedIdToken->getClaim('sub');
$user = $this->firebase->getAuth()->getUser($uid);
$this->logger->debug("Firebase JWT checked successfully", array('uid' => $uid,'user' => $user));
});
主要内容如下:
$verifiedToken=$this-
用户详细信息可在此处检索:
$user=$this-
我可以在Firebase JWT中获取uid、电子邮件和所有信息。
令牌本身的TTL为1小时,因此我可能必须刷新令牌并在后端重新验证它。
我有一个基于Java/Spring的web应用程序,它使用Oracle11g。当前,用户在登录时直接通过用户名/密码对系统表进行身份验证。 这不得不改变,所以我们创建了一个(常规的)新表,在那里存储所有的用户数据。我们将所有现有密码插入到新创建的表中。然而,密码似乎是以本站点描述的方式加密/散列的 我使用了ora_hash和dbms_obfuscation_toolkit.desdecrypt,但
我正在尝试将wildfly身份验证迁移到elytron,并且除了一个问题之外,几乎所有内容都可以按照我想要的方式工作。 我们正在使用quartz调度程序运行作业。这些作业不受调用方原则的约束。使用 我能够将原则传播到以下EJB调用。这不再有效,原则始终是“匿名”。有没有一种方法可以对Elytron做同样的事情?
使用validation验证器 仓库地址: validation 安装 composer require illuminate/validation 我们先单例validation验证器 namespace App\Vendor\Validators; use Illuminate\Validation\Factory; class Validator extends Factory {
我一直很难找到Google Firebase身份验证背后的SLA。根据托管和实时数据库的服务水平协议,Firebase的每月正常运行时间百分比应至少达到99.95%。它是否适用于身份验证服务?
Github : ThinkValidate - 从ThinkPHP5.1独立出来的验证器类库 安装 composer require topthink/think-validate 直接在控制器中使用 验证器没有额外的配置文件,可以直接现场定义规则,对数据进行验证,用法与ThinkPHP的控制器验证是一致的 use thinkValidate; $validate = Validate::mak
我正在尝试将Web应用程序从WebSphere 8.5.5迁移到Liberty16.0.0.3。在WebSphere中,我曾经定义了一些J2C安全条目,然后以编程方式加载这些条目。我如何在Liberty中实现这一点? 我尝试在服务器中定义一个“authData”条目。xml,然后通过AuthDataProvider加载它。getAuthData(),但这需要“passwordUtilities-1