Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
apache
pulsar
提交
10ac6c16
pulsar
项目概览
apache
/
pulsar
通知
129
Star
40
Fork
3
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Wiki
1
Wiki
分析
仓库
DevOps
项目成员
Pages
pulsar
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Pages
分析
分析
仓库分析
DevOps
Wiki
1
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
提交
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
10ac6c16
编写于
6月 13, 2017
作者:
Y
Yuki Shiga
提交者:
Matteo Merli
6月 12, 2017
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
WebSocket proxy should not make a consumer/producer when authorization is failed (#448)
上级
019e5f3b
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
26 addition
and
20 deletion
+26
-20
pulsar-websocket/src/main/java/com/yahoo/pulsar/websocket/AbstractWebSocketHandler.java
.../com/yahoo/pulsar/websocket/AbstractWebSocketHandler.java
+17
-10
pulsar-websocket/src/main/java/com/yahoo/pulsar/websocket/ConsumerHandler.java
...main/java/com/yahoo/pulsar/websocket/ConsumerHandler.java
+3
-5
pulsar-websocket/src/main/java/com/yahoo/pulsar/websocket/ProducerHandler.java
...main/java/com/yahoo/pulsar/websocket/ProducerHandler.java
+6
-5
未找到文件。
pulsar-websocket/src/main/java/com/yahoo/pulsar/websocket/AbstractWebSocketHandler.java
浏览文件 @
10ac6c16
...
...
@@ -63,11 +63,11 @@ public abstract class AbstractWebSocketHandler extends WebSocketAdapter implemen
if
(
service
.
isAuthenticationEnabled
())
{
try
{
authRole
=
service
.
getAuthenticationService
().
authenticateHttpRequest
(
request
);
log
.
info
(
"[{}] Authenticated WebSocket
producer
{} on topic {}"
,
session
.
getRemoteAddress
(),
authRole
,
log
.
info
(
"[{}] Authenticated WebSocket
client
{} on topic {}"
,
session
.
getRemoteAddress
(),
authRole
,
topic
);
}
catch
(
AuthenticationException
e
)
{
log
.
warn
(
"[{}] Failed to authenticated WebSocket
producer
{} on topic {}: {}"
,
log
.
warn
(
"[{}] Failed to authenticated WebSocket
client
{} on topic {}: {}"
,
session
.
getRemoteAddress
(),
authRole
,
topic
,
e
.
getMessage
());
close
(
WebSocketError
.
AuthenticationError
);
return
;
...
...
@@ -75,16 +75,21 @@ public abstract class AbstractWebSocketHandler extends WebSocketAdapter implemen
}
if
(
service
.
isAuthorizationEnabled
())
{
final
String
role
=
authRole
;
isAuthorized
(
authRole
).
thenApply
(
isAuthorized
->
{
if
(!
isAuthorized
)
{
log
.
warn
(
"[{}] WebSocket Client [{}] is not authorized on topic {}"
,
session
.
getRemoteAddress
(),
role
,
try
{
if
(!
isAuthorized
(
authRole
))
{
log
.
warn
(
"[{}] WebSocket Client [{}] is not authorized on topic {}"
,
session
.
getRemoteAddress
(),
authRole
,
topic
);
close
(
WebSocketError
.
NotAuthorizedError
);
return
;
}
return
null
;
});
}
catch
(
Exception
e
)
{
log
.
warn
(
"[{}] Got an exception when authorizing WebSocket client {} on topic {} on: {}"
,
session
.
getRemoteAddress
(),
authRole
,
topic
,
e
.
getMessage
());
close
(
WebSocketError
.
UnknownError
);
return
;
}
}
createClient
(
session
);
}
@Override
...
...
@@ -125,8 +130,6 @@ public abstract class AbstractWebSocketHandler extends WebSocketAdapter implemen
return
null
;
}
protected
abstract
CompletableFuture
<
Boolean
>
isAuthorized
(
String
authRole
);
private
String
extractTopicName
(
HttpServletRequest
request
)
{
String
uri
=
request
.
getRequestURI
();
List
<
String
>
parts
=
Splitter
.
on
(
"/"
).
splitToList
(
uri
);
...
...
@@ -143,5 +146,9 @@ public abstract class AbstractWebSocketHandler extends WebSocketAdapter implemen
return
dn
.
toString
();
}
protected
abstract
Boolean
isAuthorized
(
String
authRole
)
throws
Exception
;
protected
abstract
void
createClient
(
Session
session
);
private
static
final
Logger
log
=
LoggerFactory
.
getLogger
(
AbstractWebSocketHandler
.
class
);
}
pulsar-websocket/src/main/java/com/yahoo/pulsar/websocket/ConsumerHandler.java
浏览文件 @
10ac6c16
...
...
@@ -87,9 +87,7 @@ public class ConsumerHandler extends AbstractWebSocketHandler {
}
@Override
public
void
onWebSocketConnect
(
Session
session
)
{
super
.
onWebSocketConnect
(
session
);
protected
void
createClient
(
Session
session
)
{
try
{
this
.
consumer
=
service
.
getPulsarClient
().
subscribe
(
topic
,
subscription
,
conf
);
this
.
service
.
addConsumer
(
this
);
...
...
@@ -247,8 +245,8 @@ public class ConsumerHandler extends AbstractWebSocketHandler {
}
@Override
protected
CompletableFuture
<
Boolean
>
isAuthorized
(
String
authRole
)
{
return
service
.
getAuthorizationManager
().
canConsume
Async
(
DestinationName
.
get
(
topic
),
authRole
);
protected
Boolean
isAuthorized
(
String
authRole
)
throws
Exception
{
return
service
.
getAuthorizationManager
().
canConsume
(
DestinationName
.
get
(
topic
),
authRole
);
}
private
static
String
extractSubscription
(
HttpServletRequest
request
)
{
...
...
pulsar-websocket/src/main/java/com/yahoo/pulsar/websocket/ProducerHandler.java
浏览文件 @
10ac6c16
...
...
@@ -88,14 +88,14 @@ public class ProducerHandler extends AbstractWebSocketHandler {
}
@Override
public
void
onWebSocketConnect
(
Session
session
)
{
super
.
onWebSocketConnect
(
session
);
protected
void
createClient
(
Session
session
)
{
try
{
ProducerConfiguration
conf
=
getProducerConfiguration
();
this
.
producer
=
service
.
getPulsarClient
().
createProducer
(
topic
,
conf
);
this
.
service
.
addProducer
(
this
);
}
catch
(
Exception
e
)
{
log
.
warn
(
"[{}] Failed in creating producer on topic {}"
,
session
.
getRemoteAddress
(),
topic
,
e
);
close
(
FailedToCreateProducer
,
e
.
getMessage
());
}
}
...
...
@@ -176,8 +176,9 @@ public class ProducerHandler extends AbstractWebSocketHandler {
return
MSG_PUBLISHED_COUNTER_UPDATER
.
get
(
this
);
}
protected
CompletableFuture
<
Boolean
>
isAuthorized
(
String
authRole
)
{
return
service
.
getAuthorizationManager
().
canProduceAsync
(
DestinationName
.
get
(
topic
),
authRole
);
@Override
protected
Boolean
isAuthorized
(
String
authRole
)
throws
Exception
{
return
service
.
getAuthorizationManager
().
canProduce
(
DestinationName
.
get
(
topic
),
authRole
);
}
private
void
sendAckResponse
(
ProducerAck
response
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录